Я использую функцию ioctlsocket(), чтобы сделать мой сокет неблокирующим, но когда я вызываю recvfrom(), я получаю ошибку 10035 (WSAEWOULDBLOCK
).recvfrom() error 10035 с использованием неблокирующих сокетов
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;
}
}
Может кто-нибудь объяснить, почему это происходит? :(
Вызов ввода-вывода может завершиться неудачно. Вы уверены, что вы * преуспеваете *, так как не блокируете сокет? – unwind
Вы получаете WSAEWOULDBLOCK в неблокирующем сокете, если в настоящее время данных нет. Это нормальное поведение. –