Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Новоые подключение на событие OnDisconnect [D6, WinXP]


Delpher_Gray ©   (2004-12-30 21:27:00) 

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

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

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


Eraser   (2005-01-05 01:23:00) [1]

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


ArchValentin   (2005-01-04 19:12:00) [2]


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

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


Delpher_Gray   (2005-01-02 14:32:00) [3]

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


ArchValentin   (2005-01-02 14:21:00) [4]

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

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


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


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

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


зачем?


able   (2005-01-02 11:59:00) [6]

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


Delpher_Gray   (2005-01-02 11:25:00) [7]

??


Delpher_Gray   (2005-01-01 11:44:00) [8]

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


Digitman   (2004-12-31 08:26:00) [9]

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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо