잘 .. 대용량 소켓을 처리하기 위해 epoll + multithread의 일반적인 모델을 사용합니다. 즉, epollWorkThread라는 스레드에서 epoll_wait를 사용하여 I/O를 처리합니다. 소켓. EPOLLIN 이벤트가있는 동안 recv()가 작업을 수행하며 즉각 반환 할 수 있도록 noblocking 모드를 사용합니다. recv()는 실제로 while (true) 루프에 있습니다. 모든 것이 초기 시간 (어쩌면 몇 시간 또는 어쩌면 몇 분 또는 운이 좋으면)이라도 정보를받을 수 있습니다. 그러나 얼마 후 recv()는 errno = 107 (ENOTCONN)과 함께 -1을 반환한다고 주장합니다. 전송 장치의 다른 피어는 AS3에 작성되어 소켓이 연결되어 있는지 확인합니다. 그래서 나는 recv() 동작에 혼란스러워합니다. 미리 감사 드리며 모든 의견을 환영합니다!recv()와 errno = 107 : (전송 끝점 연결)
4
A
답변
3
Errno 107은 소켓이 이 아니고이 연결됨을 의미합니다. 이 문제가 발생할 수있는 몇 가지 이유가 있습니다. 당신이 옳다고 가정하고 연결의 양쪽에서 소켓이 여전히 열려 있다고 주장하면 중간 라우터/스위치가 시간 초과로 인해 연결을 끊을 수 있습니다. 이러한 일이 발생하지 않도록하는 가장 안전한 방법은 주기적으로 '건강'또는 '연결 유지'메시지를 보내는 것입니다. (따라서 중간 라우터/스위치는 연결을 거실로 허용합니다.) =
관련 문제
- 1. hMailServer에서 연결/전송
- 2. 동일한 컴퓨터의 끝점 사이의 소켓 연결
- 3. setsockopt는 errno = 2를 반환합니다.
- 4. easy_install ReviewBoard [Errno 104] 동료에 의한 연결 재설정
- 5. 예외 대 errno
- 6. errno == ENOENT의 bind() 오류?
- 7. SQL 오류의 errno : 121
- 8. postgresql에 상응하는 mysql errno
- 9. nginx 및 proxy_pass - 연결 전송 : 닫기 헤더
- 10. paramiko의 디렉토리 전송
- 11. WCF mex 끝점 유형이 서비스 끝점 유형과 일치해야합니까?
- 12. 소켓의 로컬 끝점 설정
- 13. WCF 끝점 문제
- 14. SoapUI 끝점 주소 변경
- 15. WCF IPv6 끝점
- 16. 범위에서 끝점 가져 오기
- 17. 끝점 주소 문제
- 18. 연결된 데이터와 끝점
- 19. WCF의 "끝점"은 무엇입니까?
- 20. C# WebService 끝점 문제
- 21. WCF 끝점 주소 문제
- 22. WCF HTTP 끝점 볼륨
- 23. 구성 파일에서 끝점 읽기
- 24. WCF 끝점 주소
- 25. WCF 끝점 구성
- 26. WCF 여러 서비스 끝점
- 27. WebService 오류 끝점
- 28. WCF, IIS 및 끝점
- 29. Sendmail Errno [61] 연결이 거부되었습니다
- 30. Errno 5로 인해 web2py가 발생했습니다.
아무 일도 일어나지 않아 답변이 없지만 네트워크 모니터를 사용하여 자세한 정보를 얻으십시오. tcpdump 나 wireshark를 사용합니다. 더 편리합니다. 코드가 손상되어이 문제 (valgrind)가 발생했는지 여부를 확인하는 것을 잊지 마십시오. – stefaanv
정보를 보내 주셔서 감사합니다. tcpdump를 시도했지만 패킷을 캡처하는 방법을 알지 못했습니다. "tcpdump -i eth0 '포트 myportnum'"시도했지만 anythin 캡처하지 않습니다 ... – iBacchus
eth0 확실합니까? "ip addr"로 확인하십시오. 당신은 뿌리로 그것을 시도 했습니까? 어쩌면 너는 적당한 허가가 없을지도 모른다. wireshark로 볼 수 있도록 -s0 및 -wtrace.cap도 추가했지만 매개 변수는 괜찮습니다. – stefaanv