| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Проблемма при работе с блокирующим сокетом |
| Автор: Vinni37 9.2.2011, 00:13 | ||||
Во общем проблема в следующем, у меня северный сокет блокирующий (stThreadBlocking) (Писал этот сервер не я, я пытаюсь с ним только разобраться), у сокета выставлено OnAccept := ClientAccept, в ClientAccept создается поток следующего типа:
Куда в fClientSocket записывается TCustomWinSocket который передается при OnAccept. После старта нового потока в Execute происходит в цикле while чтение из сокета что то типа этого:
Собственно 99% времени сокет находится в заблокированном состоянии ожидая запроса от клиента. Вот тут то и возникает проблема что иногда требуется отправить клиенту пакет для этого вызывается SendPacket клиентского потока, и как только дело доходит до fClientSocket.SendBuf он естественно зависает так как первым было вызвано чтение из сокета, и отправка идет только когда клиент что нибудь пришлет. Как это обойти при использовании блокирующих сокетов. За ранее спасибо. |
| Автор: MetalFan 9.2.2011, 09:53 |
| емнип, у TCustomWinSocket есть функции проверки, есть ли что в буффере входящем. Точно не скажу, как называются - делфи под рукой нет. |