안녕하세요.
이거 제목을 뭐라 달아야 할지 좀 난감해서 의미 불명의 제목이 됐습니다.
완성된 클라이언트를 테스트 하기 위해 테스트 서버를 만들어야 합니다.
클라이언트는 테스트 서버에 접속한 후에 바로 데이터를 송신하는데요..
이때 송신 실패가 발생하도록 테스트 서버를 만들어야 합니다.
(당연히 클라이언트는 손대면 안되지요)
그래서 테스트 서버에서 accept()한 후에, 취득되는 차일드 소켓을 바로 close()하도록 작성했습니다.
클라이언트는 connect(sock) => send(sock)
서버는 listen(listen_sock) => clnt_sock = accept(listen_sock) => close(clnt_sock)
이런 절차를 거치게 됩니다.
그런데.. 이상하게도 클라이언트에서 송신 에러가 발생하지 않기에 뭐가 잘못된거지? 하고 소켓 상태를 보니, 서버에서 바로 클라이언트 소켓을 close()해도 소켓의 상태는 CLOSE_WAIT 상태가 되어버리더군요.