Уважаемый All!
При работе с сокетами использую функцию Select для проверки входящих сообщений. Последним параметром функции является либо время ожидания (через указатель на структуру), либо NULL. В последнем случае функция ждет до получения чего-либо.
Проблема в следущем: если передаю NULL, все нормально работает. А вот если пытаюсь только проверить состояние, то данных нет, и периодически появлется SOCKET_ERROR.
Код следующий:
Попробуй найти в уже написанных компонентах каким образом идёт запрос количества данных в очереди сокета...
Я щас точно не помню, но вроде это не через select делается...
Хм... Уточняю:
Программа работает в локальной сети по TCP/IP (проще говоря, ЧАТ )
Общение идет через broadcast-сообщения, потому и сокеты настроены соотвственно. Кстати, может все же что-то не так в настройках сокетов?.. Но тогда почему функция нормально работает с вариантом Select(... ,nil)?
Прочитал Help по API (все по мануалу!), пролистал кучу ссылок в инете, просмотрел что есть в Делфи (кстати, единственное место, где используется функция select - это модуль SvrHTTPIndy.pas, и там все сделано аналогично тому, что я привел выше). Непонятно...
SvrHTTPIndy.pas - это дочерний компонент Indy сокета, так что искать надо в компонента сокета...
А вообще очень легко найти эту функцию отследив функцию получения количества данных в функциях стандартных сокетов...
А select это совсем другое...
Спасибо за помощь!
Оказалось, что перед каждым вызовом select необходимо заново заполнять fdset. А этот ньюанс в API-хелпе для Делфы не описан
Теперь усе заработало