C# Socket 베이스(2) 서버에서 비동기적으로 메시지 수신
7791 단어 socket
ManualResetEvent reviceManager = new ManualResetEvent(false);
1 public void args_Completed(object sender, SocketAsyncEventArgs e)
2 {
3 // ,
4 var clientSocket = e.AcceptSocket;
5
6 if (clientSocket == null) return;
7 //
8 //
9 var t = new Thread(GetClientMsg);
10 //
11 t.IsBackground = true;
12 //
13 t.Start(clientSocket);
14 //
15 ShowMsg(clientSocket.RemoteEndPoint + " ");
16 // ,
17 manager.Set();
18 }
대조를 건의하다C# Socket 기반 (1) 비동기식 서비스 탐색 시작 보자.
1 private void GetClientMsg(object socket)
2 {
3 var socketClient = socket as Socket;
4 if (socketClient == null) return;
5 while (true)
6 {
7 try
8 {
9 reviceManager.Reset();
10 var bytes = new byte[1024 * 1024 * 4];
11 var receiveArgs = new SocketAsyncEventArgs();
//
12 receiveArgs.SetBuffer(bytes, 0, bytes.Length);
13 receiveArgs.Completed += receiveArgs_Completed;
//
14 socketClient.ReceiveAsync(receiveArgs);
15 reviceManager.WaitOne();
16 }
17 catch (Exception ex)
18 {
19
20 //
21 ShowMsg(ex.Message);
22 }
}
}
메시지 수신 완료 콜백 이벤트
1 void receiveArgs_Completed(object sender, SocketAsyncEventArgs e)
2 {
3 var socketClient = sender as Socket;
4 var bytes = e.Buffer;
5 ShowMsg(socketClient.RemoteEndPoint + " :" + System.Text.Encoding.UTF8.GetString(bytes));
6 reviceManager.Set();
7 }
계속 기다리다.다음 편:Socket 기반 (3) 클라이언트와 서버 연결 및 메시지 수신
저자:gaobing
출처:http://gaobing.cnblogs.com
제시: 본고의 판권은 작가와 블로그원이 공유하고 있습니다. 전재를 환영하지만 작가의 동의 없이 이 성명을 보류하고 글 페이지의 뚜렷한 위치에 원문 연결을 해야 합니다. 그렇지 않으면 법적 책임을 추궁할 권리를 보류합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.