| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > TclientSocket |
| Автор: wsr 19.1.2006, 00:18 | ||
| Привет всем. У меня возник небольшой вопрос по TCkientSocket(вкладка Internet) в Delphi 7. В общем, я отправляю запрос, получаю ответ. И вот как мне сразу после получения ответа закрыть сокетное соединение? Подскажите плизз. З.Ы. Есть ли какой нить мануал по TClientSocket. Просто о использовании?
|
| Автор: Демо 19.1.2006, 02:21 | ||
|
| Автор: wsr 19.1.2006, 09:45 |
| Я это уже пробовал. Знаешь почему это не работает. Потому, что нам приходит несколько пакетов с ответом, а ты после получения первого пакета отрубаешь соединение. Именно поэтому я и использую Memo1.Text := Memo1.Text + Socket.ReceiveText; |
| Автор: FRAGNATIC 19.1.2006, 14:02 |
| wsr отрубай соединение после последнего пакета) или поставив счётчик на их кол-во если знаешь) или поставивв таймер типа если за 10секунд не фига не пришло) или по самому пакету=) если это твоё приложение шлёт пакеты то тогда можешь слать пакет типа 'end' а потом проверяешь if Socket.ReceiveText='end' then.... |
| Автор: N1k 19.1.2006, 14:17 |
| wsr Чем тебя не устрамвает автоматический разрыв соединения? Ищи в заголовке Content-Length и сравнивай с количеством прочитанных данных. После того, как Content-Length станет равным длинне прочитанных данных, рви соединение. зы:Content-Length не учитывает заголовок... |
| Автор: RA 19.1.2006, 16:39 |
| По существу: А использовать какойнить httpclient религия не позволяет? Если не позволяет тогда есть один извращенческий способ: если в ClientSocket1Read присол текст содержащий в последней строке = "</html>" значит ты получил всю html страницу .... do Disconnect Не по сущесву: (Анти реклама ИМХО. вобще использование TCkientSocket как для веба так и для не веба крайне нерекомендуемо. Эти компоненты скорее демонстрационное пособие но не более. |
| Автор: wsr 19.1.2006, 22:11 | ||
| Как бы еще узнать, что именно этот пакет последний После получения данных проходит примерно от 5 до 10 секунд до разрыва соединения. Дай какой нить пример, да желательно и с "мануалом" по компоненту.
Можешь назвать такие компоненты? Был в Delphi 4-5 компонент, назывался NMHTTP. Так классно было. Можно было в легкую послать запрос, получить отдельно Header и Body из ответа, и закрыть соединение. А в Delphi 7 я что то подобного компонента ненашел! |
| Автор: Snowy 19.1.2006, 22:38 |
| Интересно ищешь. Слово Indy в поиске завалит тебя примерами. TIdHTTP штука очень мощная. |
| Автор: wsr 19.1.2006, 22:46 |
| Snowy, спасибо посмотрю. |
| Автор: RA 19.1.2006, 22:56 |
| компоненты ICS www.owerbyte.be (Имхо удобней и проще чем индейцы, мануалы ненужны есть примеры) Не рекомендуемо мной, хотя уверен если провести опрос то многие подпишутся. Насчёт ошибок клиента, не помню (возможно мелкие есть) , но судя по тому когда эти компоненты последний раз обновлялись не исключено, а вот в СерверСокете как минимум одна гадкая ошибка была найденна. Ну а поскольку сервер и клиент представляются в одной связке, то моё недоверие автоматически распространилось и на него. |
| Автор: Snowy 20.1.2006, 10:25 | ||
Подписываюсь Использовать готовые библиотеки работы с сетевыми протоколами лучше по простой причине: 1. Это проще. 2. Там уже обойдены все грабли, на которые сам обязательно наступишь. Есть и минусы, но они важны только для маньяков или разработчиков собственных библиотек. |
| Автор: N1k 20.1.2006, 11:37 |
| Самый простой "компонент" это WinInet. Научишься пользовать его для HTTP и проблем у тебя не будет... В том плане, что все предложенные комноненты не работают с HTTPs без дополнительных библиотек, А WinInet eсть на каждой машине с Windows. ps:Как пример посмотри компонент EasyNet. Он написан с использованием WinInet и есть возможность использовать кукисы локально... |
| Автор: Snowy 20.1.2006, 13:20 |
| 1. Это не компонент. 2. Работает только в обычных условиях. Шаг влево, шаг вправо - все. У меня, например он не работает, т.к. я не пускаю IE в сеть. А еще полно ньюансов с проксями... |
| Автор: Демо 21.1.2006, 18:49 | ||
Вряд ли. Просто нужны прямые руки (это не про тебя, а вообще). |