소켓 - 에코서버프로그램에서 이해가 안되는 부분이있는데요...
글쓴이: jee9894 / 작성시간: 월, 2018/05/14 - 11:01오전
간단한 에코서버 프로그램입니다
while (1) { memset(&ClientSockInfo, 0, sizeof(struct sockaddr_in)); SockLen = sizeof(struct sockaddr_in); ClientSocket = accept(EndpointSocket, (struct sockaddr *)&ClientSockInfo, &SockLen); if (ClientSocket == INVALID_SOCKET) { printf("Accept Error\r\n"); closesocket(EndpointSocket); WSACleanup(); return 1; } printf("Accept Client\r\n"); Readn = recv(ClientSocket, ReadBuffer, MAX_PACKETLEN, 0); if (Readn > 0) { Writen = send(ClientSocket, ReadBuffer, Readn, 0); } else { printf("Read Error\r\n"); } closesocket(ClientSocket); }
이 부분에서 맨 밑에 closesocket부분이 있기때문에 제 생각으로는 문자열 하나만 받고 그대로
클라이언트에 보내줄때 Accept Client가 계속 찍혀서 나와야 되는거 아닌가요?
그런데 실제로 해보니 Accept Client는 한번만 찍히고 계속해서 에코서버프로그램이 동작하더라고요
이부분이 이해가 잘 가질 않습니다 설명 부탁드리겠습니다
Forums:
teststesteste
클라이언트쪽 소켓을 봐야알수있겠지만 클라이언트쪽에서 연결이 끊어지면 재접속 루틴이 있을거같은데요..
댓글 달기