C에서 여러 클라이언트가있는 서버로 놀고 있었는데 한 가지만 나타났습니다. 클라이언트가 서버에서 연결을 끊을 때마다 (서버가 클라이언트의 파일 설명자에서 단순히 닫기를 호출 할 때) 선택 호출 (select를 사용하여 여러 클라이언트의 메시지를 처리 함)에서 서버의 소켓을 읽을 준비가 된 것으로 설정하고 호출의 반환 값은 0입니다. select는 서버 소켓에서 0을 계속 반환하기 때문에이 사실을 무시하면 서버가 차단됩니다 다른 소켓을 기다리는 대신 준비 상태로 설정하십시오. 누군가 연결이 끊어진 후 서버가 새로운 연결을 수락하기 전에 서버 소켓을 사용하여 수행 할 추가 정리가 있습니까?클라이언트가 연결을 끊을 때 서버 선택 소켓을 선택하여 호출합니다.
0
A
답변
0
서버가 recv()
에서 0 또는 -1이되면 해당 소켓에서 close를 호출해야하며 select()
으로 전달되는 읽기 및 쓰기 fdsets에서이 소켓을 제거해야합니다. 그렇지 않으면 select()가 오류를 반환합니다. 읽기/쓰기 fdset에 나쁜 fd가 있습니다.
관련 문제
- 1. 클라이언트가 연결을 끊을 때 서버가 소켓을 제거/연결 해제하지 않습니다.
- 2. Flex 클라이언트가 BlazeDS 대상에서 연결을 끊을 때 (서버 측) 감지
- 3. 클라이언트가 연결을 끊을 때 서버 DCOM에서 참조를 해제하는 방법
- 4. 클라이언트가 연결을 끊을 때 서버가 응답을 멈 춥니 다
- 5. 클라이언트가 연결을 끊을 때마다 서버 로그의 Hazelcast 경고가 발생합니다.
- 6. mongodb에서 연결을 끊을 때
- 7. 클라이언트가 연결을 끊을 때 구독을 제거하는 방법은 무엇입니까?
- 8. 연결을 끊을 때 딥 스트림 클라이언트가 구독을 취소합니까? 워드 프로세서
- 9. flex 클라이언트가 연결을 끊을 때 ActiveMQ가 구독을 중지하지 않습니다.
- 10. 클라이언트가 연결을 끊을 때 bottle.py가 멈 춥니 다
- 11. Python Asyncore는 클라이언트가 연결을 끊을 때 handle_read를 실행합니다.
- 12. 서버 연결을 끊을 때 클라이언트 정보를 얻을 수있는 방법이 있습니까?
- 13. 연결을 끊을 때 객체 제거 socket.io
- 14. 클라이언트가 IP 주소를 변경하거나 연결을 끊을 때 hots websocket-close 이벤트를 catch합니까?
- 15. 사용자가 연결을 끊을 때 Firebase 서버 측 로직
- 16. Pusher.com - 다른 사람이 연결/연결을 끊을 때 서버 측에 알림
- 17. 클라이언트가 연결을 끊을 때까지 Java TCP 서버가 패킷을받지 못합니다.
- 18. xmpp 서버의 클라이언트가 다른 클라이언트와 서버의 연결을 끊을 수 있습니까?
- 19. Java - 클라이언트가 연결을 끊을 때까지 소켓이 읽히지 않습니까?
- 20. Flex 프로젝트에서 연결을 끊을 때 웹캠을 해제하십시오.
- 21. 클라이언트가 서버 요청을 조기에 끊을 때 클라이언트가 연결 해제 된 후에도
- 22. 클라이언트가 연결을 끊었을 때 NSNetService에 알리는 방법은 무엇입니까?
- 23. 서버가 연결을 끊을 경우에만 파일 전송이 완료됩니다.
- 24. Deepstream.io - 클라이언트가 연결을 끊으면 서버 콜백이 발생합니까?
- 25. 클라이언트가 연결을 닫습니다.
- 26. 클라이언트가 연결을 재설정하는 중
- 27. 연결을 청취 할 때 소켓을 닫는 방법
- 28. 스프링 통합 - TCP 서버가 선택적 클라이언트 연결을 끊을 수 있습니까?
- 29. JAXWS 클라이언트가 X509 서버 인증을 사용하여 JAXWS 웹 서비스를 호출합니다.
- 30. PHPWebsocket 클라이언트가 즉시 연결을 끊습니다
대단히 감사합니다! 소켓을 fdsets에 추가 할 때 잘못된 플래그를 확인하고있는 것으로 나타났습니다. – user1435820