Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Новоые подключение на событие OnDisconnect   Найти похожие ветки 

 
Delpher_Gray   (2004-12-30 21:27) [0]

Добрый день !
Поздравляю всех с новым годом !!

такая задача (очень простая, а я затупил :)
вобщем есть TClientSocket. На событие OnDisconnect нужно сменить данные сокета (хост и порт) и заного подключиться.
Подключиться занго у меня не получается :(
Пишу:
ClientSocket1.Host := "localhost";
ClientSocket1.Port := 80;
ClientSocket1.Open;

не подключается :(


 
Digitman ©   (2004-12-31 08:26) [1]

у тебя же неблок.режим ?
ну так факт подключения - это именно событие OnConnect, а вовсе не завершение выполнения метода Open() ..

в событии OnError это (смену "координат" сервера и повторный вызов Open) следует делать, перед тем убедившись что ErrorCode имеет значения из списка WSAHOST_NOT_FOUND, WSAETIMEDOUT, WSAECONNREFUSED

можно еще перед повторным подключением сделать задержку, например, в событии OnError разрешив работу таймера, в обработчике OnTimer которого тут же запрретить таймер и вызвать Open


 
Delpher_Gray ©   (2005-01-01 11:44) [2]

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


 
Delpher_Gray ©   (2005-01-02 11:25) [3]

??


 
able ©   (2005-01-02 11:59) [4]

см Digitman ©   (31.12.04 8:26) [1]


 
Piter ©   (2005-01-02 13:26) [5]

Digitman ©   (31.12.04 8:26) [1]
можно еще перед повторным подключением сделать задержку


зачем?


 
ArchValentin ©   (2005-01-02 14:21) [6]

Короче у мя был такой косяк, вылечил вот как:

ClientSocket.close;
sleep(100);
ClientSocket.host:= чё там тебе нужно
ClientSocket.port:= чё там тебе нужно
ClientSocket.address:= чё там тебе нужно
ClientSocket.active:=true;


Знаю, не идеально, но работает. А sleep настолько маленький, юзер даже не заметит...


 
Delpher_Gray ©   (2005-01-02 14:32) [7]

Я через sleep() пробывал, но неполучилось...
Можно вместо Timer"а сделать через SetTimer() чтоб объект новый не создавать, но это по-моему то же не выход...


 
ArchValentin ©   (2005-01-04 19:12) [8]


> Я через sleep() пробывал, но неполучилось...

А чё тогда за ошибка?


 
Eraser ©   (2005-01-05 01:23) [9]

INDY 10, устал повторять !! ;))



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

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
11-1091803299
Дмитрий Галин
2004-08-06 18:41
2005.03.13
Ошибка компиляции после установки компонента


1-1109248689
Алина
2005-02-24 15:38
2005.03.13
Запрет отображения компонента


6-1104840203
Sergio
2005-01-04 15:03
2005.03.13
Зарубежный трафик


8-1101295022
Novichok
2004-11-24 14:17
2005.03.13
как с помощью DelphiX сделать screenshot


1-1109537257
StarLit
2005-02-27 23:47
2005.03.13
Как в FileListBox сделать, чтобы он показывал файлы *.jpg и *.gif