2010-12-05 3 views
1

연결 선택 시간이 errno에 설정된 시간 초과 값을 반환하는 것으로 나타났습니다. 그러나 왜 이렇게 될지 알지 못합니다. 어떻게 알 수 있습니까? 어떻게 이걸 처리 할 생각입니까? (Im은 연결 중 하나가 시간 초과되었음을 의미하는 것으로 추측합니다. 아마도 적절한 시간에 ACK가 들리지 않았습니다.) 이드는 서버 소켓이 있고 이전에 비 블로킹 연결을 실행했다면이 유일한 합법적 인 경우를 상상할 수 있습니까? 어떤 경우에이 소켓에 연결을 다시 실행하면 연결 여부와 관계없이 다시 돌아올 수 있습니다.이 방법을 사용하면 .... 그러나 더 좋은 방법이 있습니까?select() 호출의 컨텍스트에서 연결 시간 초과의 의미

미리 감사드립니다.

+0

네, 이것은 nonblocking'connect'에서만 발생합니다. 그러나 나는'non-blocking 'connect'를'select'와 함께 사용하는 것을 잊어 버렸습니다. 그래서 대답이 아닌 주석으로 쓰고 있습니다. –

답변

0

위에서 언급 한 의견은 아마도 의 select() 일 것입니다. 이것이 일반적으로 타임 아웃이 아닌 한, 수신 된 TCP 소켓의 경우도 발생할 수 있습니다.

http://www.lowtek.com/sockets/select.html

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select

http://beej.us/guide/bgnet/output/html/multipage/advanced.html#blocking

참조 파이썬 예를 들어이 질문 :

어느 쪽이든, 아래 select()의 사용에 메모리를 새로 고침하는 두 가지 매우 유용한 가이드가 있습니다

How can I get non-blocking socket connect()'s?

건배.