4.1 TCP 에코 서버 – 스레드를 이용한 멜티플렉싱 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

3장에서 작성한 TCP 에코 서버는 AcceptLoop 함수에서 하나의 클라이언트의 연결을 수락하면 해당 클라이언트에게 에코 서비스를 제공하는 작업이 끝나야 다른 클라이언트의 연결을 수락하였습니다.

이번에는 하나의 클라이언트의 연결을 수락하면 클라이언트에게 에코 서비스를 제공하는 스레드를 시작하게 합시다.

이처럼 연결 수락 과정에서 반환한 소켓으로 송수신하는 부분을 스레드를 이용하면 AcceptLoop 수행하는 부분과 연결을 수락한 클라이언트와의 송수신 부분을 독립적으로 수행할 수 있습니다. 물론 송수신하는 스레드는 하나의 클라이언트와의 송수신을 담당합니다.

참고로 소켓 라이브러리에서는 getpeername 함수를 제공하여 상대 소켓 주소를 알아낼 수 있습니다.

다음은 스레드를 이용한 TCP 에코 서버 소스 코드입니다.

클라이언트는 3장에서 작성한 TCP 에코 클라이언트를 사용하시길 바랍니다.