- 채팅 메세지 사용자 입력 및 송신처리 전담 쓰레드를 만든다.
- 서버가 보내주는 채팅 메세지 수신 및 처리 전담 쓰레드 분리
채팅을 받을 쓰레드를 따로 생성
// 채팅 메세지 수신 쓰레드 생성
DWORD dwThreadID = 0;
HANDLE hTread = ::CreateThread(NULL,
0,
ThreadReceive,
(LPVOID)hSocket,
0,
&dwThreadID);
::CloseHandle(hTread);
ThreadReceive
// 서버가 보낸 메세지를 수신하고 화면에 출력하는 쓰레드 함수
DWORD WINAPI ThreadReceive(LPVOID pParam)
{
SOCKET hSocket = (SOCKET)pParam;
char szBuffer[128] = { 0 };
while(::recv(hSocket, szBuffer, sizeof(szBuffer), 0) > 0)
{
printf("-> %s\n", szBuffer);
memset(szBuffer, 0, sizeof(szBuffer));
}
puts("수신 쓰레드가 끝났습니다.");
return 0;
}
서버로부터 FIN( 0 )을 받으면 끝낸다.
'네트워크' 카테고리의 다른 글
| [네트워크] I / O 멀티플렉싱 (0) | 2025.04.17 |
|---|---|
| [네트워크] 우아하지 않은 비정상 종료 (0) | 2025.04.14 |
| [네트워크] 멀티쓰레드 채팅 서버 (0) | 2025.04.13 |
| [네트워크] 멀티 쓰레드 Echo (0) | 2025.04.11 |
| [네트워크] 소켓에서 버퍼링을 하는 이유 (0) | 2025.04.10 |