Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2009, 21:22   #11
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Перечитал еще раз ваш вопрос, не так вас понял. В вашем случае прежде всего советовал бы проверить конфликты ресурсов между потоками
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.01.2009, 21:32   #12
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

У каждого потока создается свой клиент и хэндлер, все обращения к объектам основного потока (для отображения статуса, записи в лог и т.д.) по Synchronize. Было бы странно, если бы конфликт ресурсов проявлялся в разном результате работы одного метода при разном списке параметров.
Антон Ю.Б. вне форума Ответить с цитированием
Старый 06.01.2009, 22:04   #13
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

Квэнди, теперь я Вас перечитал и, похоже, понял, что прежде тоже не совсем так Вас понял. Вы про зависание говорили? Правда, тогда ответ мой в основной части все равно остается прежним

А насчет особенностей вызова вроде понял по исходникам Indy, где может возникать некорректность (если в ReadStream возникает FInputBuffer.Size>=LWorkCount). Но докопаться время будет, видимо, не сегодня уже.
Антон Ю.Б. вне форума Ответить с цитированием
Старый 06.01.2009, 22:05   #14
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

конфликт ресурсов между потоками может проявится когда угодно и ге угодно, так уж сложилось. Но в вашем случае только подробный дебаг скорей всего даст правильный ответ.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.01.2009, 22:15   #15
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

Да зависание клиента есть даже тогда, когда только один поток клиента обращается к серверу. При тестировании даже на локалхосте между двумя нижеследующими выводами в лог проходит 30 секунд. То есть висит ровно на вызове Connect.

FLogStr:='Соединяемся с хостом '+ConnSettings.AdressS+' по порту '+IntToStr(ConnSettings.PortS)+' в потоке '+FName;
Synchronize(PutLog);
fIdTcpClient.ConnectTimeout:=ConnSe ttings.Timeout;
fIdTcpClient.ReadTimeout:=ConnSetti ngs.Timeout;
FIdTCPClient.Socket.ReadTimeout:=Co nnSettings.Timeout;
FIdTCPClient.Socket.ConnectTimeout: =ConnSettings.Timeout;
fIdTcpClient.Connect;
FLogStr:='Соединение успешно для потока '+FName;
Synchronize(PutLog);

Может ли дело быть в IdSSLIOHandlerSocketOpenSSL или, скажем, его неверных настройках?
Антон Ю.Б. вне форума Ответить с цитированием
Старый 06.01.2009, 23:03   #16
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

да может и в ssl я предпочитаю не связываться с ssl в Indy.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 07.01.2009, 13:09   #17
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

Дык проксей для клиента все же хочется. Попробовал вот TIdIOHandlerStack вместо TIdSSLIOHandlerSocketOpenSSL (ну и соответственно на сервере) - так вообще все работать перестало.
Антон Ю.Б. вне форума Ответить с цитированием
Старый 08.01.2009, 00:08   #18
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

просто использование open ssl все- таки зависимо как версий соответствующих бибилиотек у клиентов. Можете попробовать вместо Indy использовать ICS
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 08.01.2009, 00:12   #19
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

А как там с прокси для TCP? Пробовали его в одном проекте использовать, но там требовалось нормальное управление http-header, а с ICS это что-то не получилось.
Антон Ю.Б. вне форума Ответить с цитированием
Старый 08.01.2009, 13:39   #20
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Использовал ICS пару раз не более, так что для подобного необходимо в доках смотреть. Впечатление от ICS осталось таким: более проработанные, но менее дружественные компоненты.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdTCPClient, прием сообщений. gusluk Работа с сетью в Delphi 1 26.12.2008 09:48
IdTcpClient и idTcpServer xTANATOSx Работа с сетью в Delphi 9 17.05.2008 23:11
Реакция IdTCPClient OrdJONY Работа с сетью в Delphi 3 30.08.2007 10:16
передача данных через idtcpclient BioS Работа с сетью в Delphi 0 20.02.2007 11:04