소켓에 문제가 있습니다. 컴퓨터와 휴대 전화 사이에 소켓을 만들어 메시지를 보내고 있습니다. 서버 또는 클라이언트를 닫을 때 FIN 패킷을 보내고 1 분 동안 FIN_WAIT2 상태로 유지됩니다. 그러나 다른 쪽은 CLOSE_WAIT 상태에 머물러있어 분명히 소켓을 닫을 수 없습니다. 나는 소켓을 즉시 닫아야한다고 생각한다. 그래서 서버가 소켓을 닫고 싶을 때 소켓을 닫는 코드를 구현해야한다. 어떻게해야합니까?소켓 반대쪽 소켓이 닫히지 않는 이유는 무엇입니까? (close_wait)?
0
A
답변
2
소켓 채널의 양쪽 끝을 닫아야합니다.
서버가 클라이언트에 대한 연결을 닫으면 클라이언트는 마지막 FIN
패킷 (클라이언트에서 서버로)을 전송하기 위해 클라이언트 쪽에서 연결을 닫아야합니다. 그러면 TCP state machine에서 마지막 상태 전환이 트리거됩니다.
0
CLOSE_WAIT는 피어가 FIN을 보내고 TCP가 로컬 응용 프로그램이 소켓을 닫을 때까지 기다리는 중임을 나타냅니다. RFC 793을 참조하십시오. 자동으로 발생하지는 않습니다.
관련 문제
- 1. Jersey 클라이언트의 CLOSE_WAIT 소켓
- 2. HttpUrlConnection이 닫히지 않는 이유는 무엇입니까?
- 3. TCP 소켓이 닫히지 않음
- 4. 소켓이 제대로 닫히지 않았습니다.
- 5. 아파치 소켓이 닫히지 않았습니까?
- 6. 리눅스 소켓이 닫히지 않습니다
- 7. 안드로이드에서 소켓이 닫히지 않았습니다.
- 8. Java 소켓이 닫히지 않고 있습니다.
- 9. 소켓 닫히지 않음 IOException
- 10. 원시 소켓이 생성되지 않는 이유는 무엇입니까?
- 11. 반대쪽 소켓이 닫혀있을 때 알 수있는 방법
- 12. Node.js 잡히지 않는 소켓 예외 - 소켓이 닫혔습니다
- 13. Drupal에서 PHP 태그가 닫히지 않는 이유는 무엇입니까?
- 14. 스레드의 닫히지 않은 ZeroMQ 소켓
- 15. asyncore 소켓이 제대로 닫히지 않습니다.
- 16. 스레드 완료시 소켓이 닫히지 않음
- 17. boto를 사용하여 S3에서 페치 할 때 TCP 소켓이 닫히지 않음
- 18. Highcharts에있는 반대쪽 yaxis 라벨이 표시되지 않는 이유는 무엇입니까?
- 19. 서버가 죽으면 소켓이 죽지 않는 이유는 무엇입니까? 서버가 살아있을 때 소켓이 죽는 이유는 무엇입니까?
- 20. 소켓이 연결을 거부하는 이유는 무엇입니까?
- 21. 소켓 응용 프로그램이 종료 후 닫히지 않습니다
- 22. 소켓이 닫힌 소켓
- 23. TCP CLOSE_WAIT 연결 상태 - 알 수없는 원인
- 24. 제한 시간 설정시 소켓이 닫히지 않음
- 25. JProfiler가 소켓 활동을 표시하지 않는 이유는 무엇입니까
- 26. 소켓이 CLOSE_WAIT 상태에 있는지 감지 할 수 있습니까?
- 27. gdb에서 소켓이 실패하는 이유는 무엇입니까?
- 28. 파이썬 다중 처리 및 소켓이 닫히지 않음
- 29. 멀티 스레드 일 때 소켓이 작동하지 않는 이유는 무엇입니까?
- 30. ResultSet이 닫히지 않은 이유는 무엇입니까?
감사합니다.하지만 클라이언트에서 연결을 닫는 코드를 구현하는 방법을 모르겠습니다. 서버를 닫으면 소켓 측면이 자동으로 닫힙니다. 어떤 조건을 테스트하거나 클라이언트 측에서 예외를 잡아서 뭔가 잘못되었을 때 소켓을 닫아야합니까? 이것을 구현하는 방법일까요? – cracq
@cracq 소켓의 원격 끝이 닫히면 로컬 끝이 읽을 수있게되고 이후의 읽기 작업은 길이가 0 인 상태로 반환됩니다. 이것은 소켓이 리모트 끝에서 잘 닫혀 졌음을 의미하며 끝을 닫아야 함을 의미합니다. –