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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2008, 10:24   #1
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
Печаль Как заставить клиентский сокет заново подключится к серверу

Есть клиент серверное приложение. Клиент автоматически подключается к серверу. Если сервер не запущен, у клиента выскочит сообщение об ошибке 10061. Я подавил это сообщение, написав в обработчике onError ErrorCode:=0;
Далее я хочу, чтобы при не удачной попытке соединения клиент все равно пытался подсоединится к серверу. Для этого я продолжаю код в обработчике события. Итого вышло:
Код:
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
ClientSocket1.Active:=True
end;
Но почему-то это не заставляет клиентский сокет заново подключится к серверу. Подскажите как это реализовать, что надо написать в обработчике onError вместо ClientSocket1.Active:=True, чтобы клиентский сокет опять пытался соединиться с сервером?
Vadik(R) вне форума Ответить с цитированием
Старый 01.11.2008, 12:28   #2
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
По умолчанию

Попробуйте так:
Код:
ClientSocket1.Active:=false;
ClientSocket1.Active:=True;
ErrorCode:=0;
Так скорее всего он попробует подключиться

Последний раз редактировалось AngelOfDeath; 01.11.2008 в 12:31.
AngelOfDeath вне форума Ответить с цитированием
Старый 01.11.2008, 12:44   #3
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Можете сделать так:
Код:
Procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
Var ErrorCode: Integer);
Begin
ErrorCode:=0;
Timer1.Enabled:=True;
End;
//--------------------------------------------------------//
Procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
Begin
Timer1.Enabled:=True;
End;
//--------------------------------------------------------//
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
If ClientSocket1.Active=False Then
Begin
ClientSocket1.Active:=True;
Timer1.Enabled:=False;
End;
End;
Код конечно побольше вашего, зато работает отлично. А в вашем варианте получается, что все события выполняются 1 раз и при отсуствии соединения они останавливаются.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.11.2008, 12:48   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от AngelOfDeath Посмотреть сообщение
Попробуйте так:
Код:
ClientSocket1.Active:=false;
ClientSocket1.Active:=True;
ErrorCode:=0;
Так скорее всего он попробует подключиться
Я пробовал, такой вариант тоже не будет работать...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.11.2008, 13:20   #5
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

За отзывчивость спасибо, но у меня почему-то все равно не работает. Во вложении Клиент и Сервер. Я хочу сделать так, что если запустить сервер после запуска клиента соединение все равно произошло. А оно не происходит
Вложения
Тип файла: rar Клиент Сервер.rar (345.4 Кб, 28 просмотров)
Vadik(R) вне форума Ответить с цитированием
Старый 01.11.2008, 13:37   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вот, немного подправил ваш код. Теперь всё работает.Клиент Сервер.rar
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.11.2008, 14:30   #7
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
По умолчанию

ППЦ, я в ужасе, я даже и подумать не мог, что такие ошибки бывают.
Теперь учту на будущее, что задание свойств в инспекторе объектов это НЕ тоже самое, что их задание в onCreate.
Спасибо ВАМ ОГРОМНОЕ!!!!!
Vadik(R) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SSH или как подключится Droniwe Работа с сетью в Delphi 4 30.10.2008 17:27
Как установить подключение к серверу MySQL rainbow Общие вопросы Delphi 7 29.09.2008 12:42
СОКЕТ Stanislav Работа с сетью в Delphi 2 06.01.2008 17:21
как подключится к удаленному серверу Interbase Konst48 БД в Delphi 5 07.11.2007 07:53
как серверу INDY распознать клиента мандарин Работа с сетью в Delphi 2 24.10.2007 13:31