Главная страница
    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.045 c
14-1108664325
Palladin
2005-02-17 21:18
2005.03.13
Green Day - American Idiot


4-1105693199
Антоныч
2005-01-14 11:59
2005.03.13
Путь к временному каталогу Windows


6-1105215904
Colonel
2005-01-08 23:25
2005.03.13
Knocking to ....


1-1109607947
Simply Alex
2005-02-28 19:25
2005.03.13
Прокрутка в DBGrid


1-1109264947
Dwan
2005-02-24 20:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский