반응형

 

(tcp/udp #5) IoT보드와 1:N통신을 위한 다중소켓 TCP서버를 C#으로 구현하기!(초고난도)
녹칸다의 TCP, UDP통신을 위한 시리즈이다!
이번편은 녹칸다의 아두이노 349편을 바탕에 깔고 진행을 한다!
그리고 C#으로 구현한 단일소켓 TCP서버를 다중소켓 TCP서버로 업그레이드 하는데 그 목적이 있다!
단일 소켓이라고 하면 서버에 접속가능한 클라이언트가 1개뿐임을 의미하는데 사물인터넷에서 그러한 서버는 아무짝에도 쓸모가 없다!
그럼에도 단일 소켓을 구현해둔 의미는 중간단계를 건너뛰지 않기 위함이었다!
단일 소켓에서 다중 소켓으로 넘어가기 위해서는 엄청나게 어렵다!
녹칸다도 순수히 백지에서 구현하기에는 방향성 잡기가 어려우므로 연휴동안 목표로 하는 결과물을 구현해뒀다!
완성되어야할 결과물의 모습을 미리 보고 어떤 과정을 거치게 되면 만들 수 있을지에 목표를 를 맞춰보도록 한다!
(이미 만들어진걸 따라 하는것도 만만치 않을 것 같다)

아래와 같은 순서로 대략 진행해보도록 하자!
1.일단 C#서버를 구현해서 클라이언트의 소켓 생성, 유지, 소멸에 관련된 매니지먼트가 가능하도록 한다!
2.C#서버와 사물인터넷보드(wemos d1r1)와 양방향 통신이 가능한지 확인한다! (이게 기본 예제로 활용됨)
3.C#서버에서 사물인터넷 보드를 지정해서 연결되어 있는 LED를 제어 할 수 있는지 확인해보자!

C#다중소켓을 위해서 아래 내용을 참조할 예정이다!
https://docs.microsoft.com/ko-kr/dotnet/api/system.threading.thread?view=net-5.0
https://docs.microsoft.com/ko-kr/dotnet/api/system.eventhandler?view=net-5.0

크로스 스레드 문제 발생시
this.Invoke(new MethodInvoker(delegate ()
{
      //해야할일
}));

 

예제순서

1. 1:N 양방향 통신이 가능한 C#TCP서버와 사물인터넷보드(wemos d1r1)를 이용한 TCP클라이언트 구현

(서버/스트리밍때 뺴먹은게 있어서 약간의 코드가 추가됨!)

(추가사항, 클라이언트 접속해제시 딕셔너리 업데이트, 서버종료시 전체 리스트 초기화)

example352-1.zip
0.05MB

(클라이언트 1호, 2호, 3호)

352-1-1(보드1번코드).txt
0.00MB
352-1-2(보드2번코드).txt
0.00MB
352-1-3(보드3번코드).txt
0.00MB

2. 사물인터넷보드 3대에 LED를 4개씩 연결한다음 서버로 제어하는 예제

(서버)

example352-2.zip
0.06MB

(클라이언트 1호, 2호, 3호)

352-2-1(보드1번LED4개제어코드).txt
0.00MB
352-2-2(보드2번LED4개제어코드).txt
0.00MB
352-2-3(보드3번LED4개제어코드).txt
0.00MB

반응형
Posted by 덕력킹
,