Ich verwende ioctlsocket() -Funktion, um meinen Socket nicht blockierend, aber wenn ich recvfrom() aufrufen, bekomme ich den Fehler 10035 (WSAEWOULDBLOCK
).recvfrom() Fehler 10035 mit nicht blockierenden Sockets
u_long mode = 1;
ioctlsocket(newSocketIdentifier, FIONBIO, &mode);
while(1)
{
if((recv_len = recvfrom(newSocketIdentifier, receiveBuffer, sizeof(receiveBuffer), 0, (struct sockaddr *) &clientSocket, &clientSocketLength)) == SOCKET_ERROR)
{
char err[128];
itoa(WSAGetLastError(),err,10);
MessageBox(NULL,"Could not Receive Data",err,MB_ICONINFORMATION);
BREAK;
}
}
Kann jemand erklären, warum das passiert? :(
E/A-Aufrufe können fehlschlagen. Sind Sie sicher, dass * der Socket nicht blockiert? – unwind
Sie erhalten WSAEWOULDBLOCK auf einem nicht blockierenden Socket, wenn derzeit keine Daten verfügbar sind. Das ist normales Verhalten. –