Używam funkcji ioctlsocket(), aby moje gniazdo nie blokowało się, ale kiedy wywołuję recvfrom(), pojawia się błąd 10035 (WSAEWOULDBLOCK
).recvfrom() błąd 10035 przy użyciu nieblokujących gniazd
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;
}
}
Czy ktoś może wyjaśnić, dlaczego tak się dzieje? :(
Wywołania We/Wy mogą się nie udać Czy jesteś pewny, że * odniosłeś sukces *, czyniąc gniazdo niezablokowalnym? – unwind
Otrzymujesz WSAEWOULDBLOCK na niepodlegającym blokowaniu gnieździe, jeśli aktualnie nie ma dostępnych danych To jest normalne zachowanie –