shutdown 에 대한..
글쓴이: rasungboy / 작성시간: 토, 2004/11/20 - 3:28오후
클라이언트 프로그램(윈도우)을 정상종료 하지않고 ctrl + alt + del 로
종료했더니 서버(리눅스)에서 shutdown() 을 호출할때 shutdown 이 실패하더군요.
저는 접속종료가 감지되면 shutdown 을 호출하고 closesocket 을 호출
해왔는데 어느순간 접속종료 감지가 안된다 해서 이상해서 코드를 살펴보니
제가 shutdown 에 실패하면 소켓을 닫지 않게 짜났더군요..
shutdown 에 왜 실패하는지 궁금합니다. 또한 shutdown에 실패해도
closesocket() 을 호출했을시나 소켓프로그래밍에서 큰 문제가 생기는지도
알고싶네요.
참고말씀 기달리겠습니다 ^^
Forums:
접속이 끊겼는지 어떻게 체크하는지 모르겠군요... 아무튼,보통 상
접속이 끊겼는지 어떻게 체크하는지 모르겠군요... 아무튼,
보통 상대방 연결이 끊기면 tcp 에서 종료 sequence를 발생시키는데 상대방이 이것을 발생시키지 못할때도 있죠.
shutdown이 어떤식으로 정확히 동작하는지는 모르겠지만, 소켓에 연결된 stream 을 닫는 겁니다. 소켓하고는 약간 별개로 동작한다고 이해할수도 있을거 같은데요. 소켓이 이미 연결이 끊겼으니 ENOTCONN 같은에러가 발생하지 않았을까요?
어떤식으로든 소켓에서 에러가 발생하면 close()를 하고 종료시켜 합니다. 더이상 소켓을 사용하는건 의미가 없으니깐요.
댓글 달기