-
TCP Echo 서비스 작동 순서
- Echo : “메아리” 와 유사함
- Client 가 보내는 데이터에 대해 Server 가 그대로 똑같은 데이터를 Client 에 보내는 방식

[Server]
- Socket() : fopen() 과 같은 함수로 통신을 위한 소켓[“소켓 디스크립터”] 을 반환한다.
- bind() : TCP 프로토콜에 대한 정보를 File 과 같은 Socket 에 붙여주는 작업 (IP Addr + Port (unique 한 port))
- listen() : Socket 의 상태가 기존의 Closed → Listen 으로 변화함
- accept() : Client 에서 연결 시도하는 소켓을 수락하고 또다른 실제 데이터 송수신에 사용할 새 소켓[“소켓 디스크립터”] 를 반환함
- 실제 데이터 송수신에 사용할 새 소켓[“소켓 디스크립터”] - 서버 통신 소켓
- 서버 통신 소켓
- recv() / send() 수행
- shutdown() : 연결 끊음을 클라이언트 소켓에 전달 (비권장)
- closesocket() : 서버 통신 소켓 이 closed 됨.
- 기존의 listen() 까지의 소켓은 계속 연결 “접수” 용으로 유지된다. - 서버 소켓
- 서버 소켓
- closesocket() : 서버 소켓 이 closed 됨.
[Client]
- (client) socket() : fopen() 과 같은 함수로 통신을 위한 소켓[“소켓 디스크립터”] 를 반환한다. - 클라이언트 소켓
- connect() : Server 의 LISTEN 중인 socket 으로 연결 시도
- accept() 되고 난 후, 클라이언트 소켓
- recv() / send() 수행
- shutdown() : 연결 끊음을 서버 통신 소켓에 전달(연결 종료 시 클라이언트에서 먼저 전달을 권장)
- closesocket() : 클라이언트 소켓이 closed 됨.