2013-06-08 2 views
1

내가 그것에 대해 읽은 것부터는 전송 버퍼가 당분간 꽉 차서 나중에 다시 보내야 함을 의미합니다. 그것이 내 문제가 발생하는 곳이며, 대기 기능은 어떻게 생겼을까요? 나는 WSAAsyncSelect와 select를 시도했지만 둘 중 어느 것이 작동 하는지를 알 수 없었다.Winsock - 비 차단 소켓 : 반송 보내기 10035

+0

10035는 EWOULDBLOCK입니다. – EJP

답변

2

select()는 정확한 도구입니다. 온라인에서 모든 종류의 예제를 찾을 수 있습니다. WinSock은 errno을 설정하지 않지만 예제에서는 POSIX (Unix, Linux 등) 시스템을 사용하는 경우 WSASetLastError()을 사용합니다. 의심스러운 경우 MSDN은 POSIX 사양이 아니라 WinSock에 대한 참조입니다!

몇 가지 장점이 있지만 사용하기가 더 복잡한 WSAEventSelect()을 사용할 수도 있습니다. 지금 당장이를 염두에두고 select()을 사용하십시오.

+0

여전히 잘못된 것을 얻고 있어야합니다. 적어도 10035를 반환하는 것을 멈추지 만 적어도 아무리 mater를 선택해도 timeout으로 돌아 가면 0을 반환합니다. 그러나 서버가 1 초 동안 잠자기라고 말하면 제대로 작동합니다. –

+0

아, 어쨌든 마지막 게시물을 편집 할 수 없습니다. 일단 tv_usec을 설정하면 작동합니다. tv_usec가 0으로 설정된 경우에도 그 이유는 무엇입니까? –

+0

코드를 보지 않고 어디에서 오류가 발생했는지 알기가 정말 어렵습니다. 연결이 서버 또는 다른 코드에 의해 닫힐 수 있습니까? –

관련 문제