TcpClient
개체를 사용하여 데이터를 보내고받습니다. 클라이언트가 연결을 잃었을 때 TcpView를 사용하여 관련 연결이 CLOSE_WAIT
상태임을 알 수 있습니다. C#에서 소켓의 상태를 볼 수 있습니까? 난 단지 서버 끝에서 소켓을 닫을 수 있도록 CLOSE_WAIT
상태를 감지하고 싶다. 일정 시간 동안 바이트를 수신하고 아무 것도 수신되지 않으면 연결을 닫을 때까지 기다릴 수 있음을 이해합니다. 방금 소켓과 스레드를 닫는 것이 좋습니다. 소켓의 상태를 C# 측에서 감지 할 수 있습니까? TcpView 프로그램이 이것을 판별 할 수 있습니다. C# 프로그램이 이것을 할 수 있습니까?소켓이 CLOSE_WAIT 상태에 있는지 감지 할 수 있습니까?
1
A
답변
0
이상적은 아니지만 socket.Available
을 확인하면 SocketException
이 표시됩니다. 그래도 이유를 확인해야합니다.
또한 다소 이상하지 않기 때문에 Poll()
(SelectRead
)으로 전화하는 것이 좋습니다. true
을 반환하면 읽을 데이터가 있거나 연결이 닫힙니다. 읽을 데이터가 없다면 그것은 당신의 대답입니다.
관련 문제
- 1. 루비 소켓이 실제로 데이터를 보내거나 읽지 않고 ESTABLISHED 또는 CLOSE_WAIT 상태에 있는지 알아낼 수 있습니까?
- 2. 소켓이 닫힌 경우 PHP 스크립트가 감지 할 수 있습니까?
- 3. 소켓 반대쪽 소켓이 닫히지 않는 이유는 무엇입니까? (close_wait)?
- 4. TCP CLOSE_WAIT 상태에 고정 된 여러 개의 완전한 HTTP 요청
- 5. Java에서 클래스를 사용할 수 있는지 감지 할 수 있습니까?
- 6. 창이 부분적으로 숨겨져 있는지 감지 할 수 있습니까?
- 7. 파이썬 : 내가 껍데기 껍질에 있는지 여부를 감지 할 수 있습니까?
- 8. iOS를 사용하면 iPhone이 켜져 있는지 감지 할 수 있습니까?
- 9. PHP 파일이 포함되어 있는지 감지 할 수 있습니까?
- 10. 누군가가 직렬 포트 스니퍼를 사용하고 있는지 감지 할 수 있습니까?
- 11. 사진에 포커스가 있는지 여부를 프로그래밍 방식으로 감지 할 수 있습니까?
- 12. iPhone의 웹 페이지에서 VoiceOver가 켜져 있는지 감지 할 수 있습니까?
- 13. Windows 8 응용 프로그램이 실행되고 있는지 감지 할 수 있습니까?
- 14. 크롬 확장 프로그램이 드롭 다운에 있는지 감지 할 수 있습니까?
- 15. 장치에서 비디오를 재생할 수 있는지 감지 할 수있는 방법이 있습니까?
- 16. iOS : 음악 라이브러리에 트랙이 있는지 감지 할 수 있습니까?
- 17. 문자열에 자바 스크립트가 포함되어 있는지 감지 할 수 있습니까?
- 18. 특정 작업의 마지막 처리 시도에 있는지 감지 할 수 있습니까?
- 19. 텍스트 필드에 텍스트가 강조 표시되어 있는지 감지 할 수 있습니까
- 20. 어떻게 arduino가 컴퓨터에 연결되어 있는지 감지 할 수 있습니까?
- 21. 코드가 cPython 또는 Jython에서 실행되고 있는지 감지 할 수 있습니까?
- 22. 어떻게 두 개의 CALayers가 겹쳐 있는지 감지 할 수 있습니까?
- 23. Android - 실제 카메라 버튼이 있는지 감지 할 수 있습니까?
- 24. 매크로 내부에 로컬 변수가 있는지 감지 할 수 있습니까?
- 25. django 프로젝트에 장고가 설치되어 있는지 어떻게 감지 할 수 있습니까?
- 26. FreeSWITCH로 통화가 전송되고 있는지 감지 할 수 있습니까?
- 27. HTTPModule에서 세션 상태에 액세스 할 수 있습니까?
- 28. 클라이언트 소켓이 서버 소켓을 감지 할 수있는 이유는 무엇입니까?
- 29. bash에서 소켓이 닫혀 있는지 확인하십시오.
- 30. 소켓이 아직 열려 있는지 어떻게 확인할 수 있습니까?
감사합니다. 내 현재의 clunky 솔루션은 단순히 클라이언트에 1 바이트를 보내고 클라이언트가 연결이 끊어진 경우 소켓 예외를 잡으려고합니다. 나는 단지 세션을 종료하기 위해 예외에 의존하기를 원하지 않는다. SelectWrite로 Poll()을 사용하면 실제로 내가하는 일의 더 나은 방법 일 수 있습니다. 그래도 소켓에 대한 tcp 상태 (established, close_wait 등)를 확인할 수 있기를 원합니다. 나는 어떻게 든 손에 소켓에 해당하는 TcpConnectionInformation 개체를 얻으려고 노력하고 있지만 가능하다면 그것을 알아 내지 못했습니다. – steven
SelectWrite가있는 Poll()은 연결이 close_wait 상태이면 여전히 true를 반환합니다. 클라이언트가 아직 메시지를 보내지 않았기 때문에 SelectRead를 사용할 수 없습니다. – steven
나중에 TcpConnectionInformation을 살펴볼 것입니다. 당신은 상태가 더 명확 할 것임을 아는 것이 옳습니다. 'SelectRead'는 분명히 갈 길입니다. 왜냐하면 _to_ 읽기가 진행중인지 알려주니까요. 후속 조건 (더 많은 데이터를 읽으려고 시도)은 데이터 또는 닫힌 연결인지 여부를 알려줍니다. 내가 말했듯이, 이상적이지 ... –