Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Вниз

работа с TTCPClient   Найти похожие ветки 

 
plotn   (2007-08-24 14:55) [0]

Добрый день, коллеги! Проясните небольшой вопрос.
Я пользуюсь вышенаписанным компонентом. Посылаю запрос к tcp серверу и получаю ответ, делаю так:

tcpClientCS.RemoteHost := наш_хост
   tcpClientCS.RemotePort := наш_порт
 tcpClientCS.Connect;
 if tcpClientCS.Connected then
 begin
   ....
   tcpClientCS.SendBuf(pchar(s)^, length(s), 0);
   ....
   iReceived := tcpClientCS.ReceiveBuf(bytes4[0], 4, 0);

Проблема в следующем. Если данные нам не посылаются, то у меня все приложение "зависает". Т.е. я пытаюсь коннектиться туда, где сервера вообще нету. И превед. Или читаю больше чем дают. Нельзя ли каким либо образом настроить таймаут, что ли, что например после какого то времени была бы ошибка чтения данных?

Спасибо заранее


 
Сергей М. ©   (2007-08-24 15:04) [1]


> Нельзя ли каким либо образом настроить таймаут


Нельзя.
Компонент не предусматривает таймауты.


 
Сергей М. ©   (2007-08-24 15:10) [2]

Чем не угодили TClientSocket, TIdTCPClient ?


 
Eraser ©   (2007-08-24 15:12) [3]


> plotn   (24.08.07 14:55) 


> Если данные нам не посылаются, то у меня все приложение
> "зависает".

так и должно быть, т.к. компоненты indy работают в синхронном режиме. Рекомендую вынести код работы с сетью в доп. поток.

> Или читаю больше чем дают.

это недопустимо.

> Нельзя ли каким либо образом настроить таймаут, что ли,
> что например после какого то времени была бы ошибка чтения
> данных?

tcpClientCS.ConnectTimeout/ReadTimeout.


 
Сергей М. ©   (2007-08-24 15:20) [4]


> Eraser ©   (24.08.07 15:12) [3]


TTCPClient - это не Инди-компонент, ты перепутал.


 
Eraser ©   (2007-08-24 17:06) [5]


> Сергей М. ©   (24.08.07 15:20) [4]

и точно, пардон.
тогда [2] самый верный совет.


 
plotn   (2007-08-24 20:11) [6]

Тогда посоветуйте пожалуйста. Я не хочу заморачиваться ни с отдельным потоком ни с какими либо дополнительными умствованиями, потому что у меня очень простой проект. Это плугин к IBExpertу, его единственная задача - запуститься, спросить сервер о данных, получить их. Даже если во время скачивания данных проект будет зависать чуток (ну, таймаут) - это мелочь. Т.е. мне нужен всего лишь инструмент для того чтобы выкачать данные, что мне нужны, если они ошибочны или связь плохая - сказать об этом, не зависая навсегда. Короче говоря, языком этого компонента мне нужно: адрес, порт, коннект, коннектед, врайт, реад; ну и все пожалуй. Т.е. хотелось бы сразу чтобы вы ткнули носом в те свойства, которые мне нужны.
Спасибо за терпение.


 
plotn   (2007-08-24 20:20) [7]

поясню все таки - я отлично понимаю как читать, допустим, файл. Т.е. я прошу - дайте мне икс байт, оно мне дает. Я сравниваю размер того, что мне дадено с тем что я просил и, если дали меньше, предполагаю, что читать больше не надо, это конец чтения. Примерно на это же я рассчитываю тут. Но специфики не знаю, поэтому и иду с вопросами к вам.


 
Eraser ©   (2007-08-27 15:17) [8]


> plotn   (24.08.07 20:11) [6]

TIdTcpClient отлично подойдет для этих целей.

> plotn   (24.08.07 20:20) [7]


> допустим, файл. Т.е. я прошу - дайте мне икс байт, оно мне
> дает. Я сравниваю размер того, что мне дадено с тем что
> я просил и, если дали меньше, предполагаю

тут от прикладного протокола зависит конечно, чаще всего сначала сервер отсылает размер данных, которые нужно принять, а потом сами данные.


 
Сергей М. ©   (2007-08-27 15:27) [9]


> не хочу заморачиваться ни с отдельным потоком ни с какими
> либо дополнительными умствованиями


Ну тогда пользуй TIdTCPClient + TIdAntifreeze - этот "джентельменский набор"  как раз и создан для тех кто не хочет "заморачиваться" и "умствовать".



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.047 c
2-1210582109
Nil
2008-05-12 12:48
2008.06.01
Затемнение главного окна пр показе моадльного


2-1210492802
Lumen
2008-05-11 12:00
2008.06.01
Программное форматирование документа Word


2-1210344648
Inna
2008-05-09 18:50
2008.06.01
Удаление и запрос


3-1197633374
Девушка
2007-12-14 14:56
2008.06.01
управление доступом к файлам на сервере посредством бд -клиента


2-1210058467
Kolan
2008-05-06 11:21
2008.06.01
Сортировка приводит к изменению количества записей, почему?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский