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

Вниз

Новоые подключение на событие 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
1-1109574458
hgd
2005-02-28 10:07
2005.03.13
О знаке разделителе


4-1107290316
kluben
2005-02-01 23:38
2005.03.13
Защищенный режим процессора


1-1109669096
XP
2005-03-01 12:24
2005.03.13
Operator not applicable to this operand type


8-1101375728
Дмитрий Ботвин
2004-11-25 12:42
2005.03.13
Объемный текст


14-1108640990
dr Tr0jan
2005-02-17 14:49
2005.03.13
Ремонт телевизора





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский