|
#1
|
||||
|
||||
Ошибка select
Пример:
Код:
sock = accept(sc, NULL, NULL); u_long mode = 1; ioctlsocket(sock, FIONBIO, &mode); sleep(1000); size = recv(sock, ...); Код:
sock = accept(sc, NULL, NULL); u_long mode = 1; ioctlsocket(sock, FIONBIO, &mode); timeval t = { 0, 0 }; fd_set read_fd; FD_ZERO(&read_fd); FD_SET(sock, &read_fd); if (select(0, &read_fd, 0, 0, &t) == SOCKET_ERROR) { ec = WSAGetLastError(); return; } size = recv(sock, ...); Еще один финт ушами: не делаем return. И данные успешно приходят. Что происходит? Почему sock - "не сокет" для select'а, но для recv'а и ioctlsocket'а - вполне себе сокет? jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 07.02.2015 в 00:36. |