작성한 질문수
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Completion Port 모델
작성
·
238
0
예시코드처럼 클라이언트 소켓은 논블로킹으로 설정해주고 서버 소켓은 블로킹인 상황에서 서버소켓으로 accept해줘서 만든 서버쪽의 클라이언트 소켓은 논블로킹 소켓이 되는 건가요?
답변 1
클라/서버 둘다 상대방이 무엇으로 동작하는진 알 수도 없고 관심도 없습니다.서버에서 소켓이 논블로킹인 이유는 소켓 설정을 그렇게 했기 때문입니다.
클라이언트쪽에서는
SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket == INVALID_SOCKET)
return 0;
u_long on = 1;
if (::ioctlsocket(clientSocket, FIONBIO, &on) == INVALID_SOCKET)//이부분
클라이언트 소켓을 논블로킹쓰겠다고 설정하는 부분이있는데
서버쪽에서
SOCKET clientSocket = ::accept(listenSocket, (SOCKADDR*)&clientAddr, &addrLen);
clientSocket 을 논블로킹으로쓰겠다고 설정하는 부분이 없어서 클라이언트쪽에서 설정한것이 그대로 유지가 되는 건가 해서 질문드렸습니다.
ListenSocket 옵션도 영향을 줍니다
클라이언트쪽에서는
SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0);
if (clientSocket == INVALID_SOCKET)
return 0;
u_long on = 1;
if (::ioctlsocket(clientSocket, FIONBIO, &on) == INVALID_SOCKET)//이부분
return 0;
클라이언트 소켓을 논블로킹쓰겠다고 설정하는 부분이있는데
서버쪽에서
SOCKET clientSocket = ::accept(listenSocket, (SOCKADDR*)&clientAddr, &addrLen);
clientSocket 을 논블로킹으로쓰겠다고 설정하는 부분이 없어서 클라이언트쪽에서 설정한것이 그대로 유지가 되는 건가 해서 질문드렸습니다.