Показать сообщение отдельно

  #29  
Старый 06.03.2010, 19:59
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
По умолчанию

Цитата:
Сообщение от #Specan  
Уважаемый slesh, я вижу вы неплохой специалист в области сетевого программирования.
Если знаете, подскажите пожалуйста такой вопрос:

В PHP сокеты можно сравнить с файлами и там есть такая замечательная функция feof, которая возвращает true если все данные считаны и соответственно false если нет.
Есть ли аналог подобной функции в Delphi.

Теперь зачем мне это:
Дело в том, что я создаю небольшой TCP клиент, и я хочу не разрывать соединение.
Вот мне как раз и нужно знать получил ли я все данные или нет.
Если тупо использовать recv и ждать, когда она вернёт 0 - это не вариант.
Она просто тупо зависнет если я её вызову после приёма всех данных.
Вот мне и нужнол решение.
Подскажите, если знаете.
Заранее спасибо.
#Specan, немного неправильно.
Цитата:
Если подключение, открытое при помощи fsockopen() не было закрыто сервером, feof() будет ждать достижения таймаута прежде чем вернуть TRUE. Время таймаута по умолчанию равно 60 секундам. Вы можете использовать stream_set_timeout() для того, чтобы изменить это значение.
То есть сервак должен закрыть соединение, что бы данная функция возвратила True.
Цитата:
Сообщение от #Specan  
Дело в том, что я создаю небольшой TCP клиент, и я хочу не разрывать соединение.
Лично я думаю, что вы должны использовать какие то особенности своего внутреннего протокола. Например, при получении определенных данных перестать читать из сокета.

Хотя я точно не уверен насчет всего этого, поэтому если что, пусть slesh ответит. Он укажет более правильный вариант.