소켓 - 에코서버프로그램에서 이해가 안되는 부분이있는데요...

jee9894의 이미지

간단한 에코서버 프로그램입니다

	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는 한번만 찍히고 계속해서 에코서버프로그램이 동작하더라고요

이부분이 이해가 잘 가질 않습니다 설명 부탁드리겠습니다

testtestetste의 이미지

클라이언트쪽 소켓을 봐야알수있겠지만 클라이언트쪽에서 연결이 끊어지면 재접속 루틴이 있을거같은데요..