Igor Garnov
2003-12-18 16:53:28 UTC
Hi All,
Столкнулся с проблемой, к решению которой не знаю, как подступиться.
Под виндами.
Вызываю ioctlsocket(hSocket, FIONREAD, &ulParam );
Ошибки не возвращает. Но в ulParam всегда возвращает ноль, хотя я уже послал
килобайт 10 в этот сокет. Сокет типа SOCK_STREAM (TCP), работает в блокирующем
режиме (иначе зачем мне этот вызов...).
Ситуацию немного осложняет то, что сокет перед вызовом connect переключается в
неблокирующий режим вызовом WSAEventSelect. Потом, когда он соединяется, я
вызываю WSAEventSelect с нулем и
ulParam = 0;
ioctlsocket( hSocket, FIONBIO, &ulParam );
чтобы перевести сокет обратно в блокирующий режим.
Подчеркну, что все функции проверяются на ошибки - все ОК.
Почему же вызов ioctlsocket(hSocket, FIONREAD, &ulParam ); показывает, что
данные не поступают?
Заранее благодарен,
Игорь.
Столкнулся с проблемой, к решению которой не знаю, как подступиться.
Под виндами.
Вызываю ioctlsocket(hSocket, FIONREAD, &ulParam );
Ошибки не возвращает. Но в ulParam всегда возвращает ноль, хотя я уже послал
килобайт 10 в этот сокет. Сокет типа SOCK_STREAM (TCP), работает в блокирующем
режиме (иначе зачем мне этот вызов...).
Ситуацию немного осложняет то, что сокет перед вызовом connect переключается в
неблокирующий режим вызовом WSAEventSelect. Потом, когда он соединяется, я
вызываю WSAEventSelect с нулем и
ulParam = 0;
ioctlsocket( hSocket, FIONBIO, &ulParam );
чтобы перевести сокет обратно в блокирующий режим.
Подчеркну, что все функции проверяются на ошибки - все ОК.
Почему же вызов ioctlsocket(hSocket, FIONREAD, &ulParam ); показывает, что
данные не поступают?
Заранее благодарен,
Игорь.