powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрыв и восстановление сетевого соединения
10 сообщений из 10, страница 1 из 1
Обрыв и восстановление сетевого соединения
    #32373382
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
Допустим делаем запрос к базе данных через ADO

При нормальном соединении с базой данных он прекрасно работает

Далее вынимаем сетевой кабель из компа, пытаемся сделать запрос - естественно Winsock Error
Вставляем кабель обратно и сразу-же делаем запрос - результат тот же Winsock Error (хотя кабель уже подключен)

Если подождать некоторое время и сделать этот запрос еще раз, то он снова отрабатывет нормально

Т.е. понятно, что при подключении сети, состояние сокета меняется не сразу,
а через некоторое время (пусть даже и небольшое)

А вопрос в том, что можно ли как-то принудительно обновить состояние сокета, чтобы запрос к базе данных выполнялся сразу-же как только появляется сеть, а не через некоторое время ?

Заранее спасибо
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374109
Андрей GR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А через какое время оно восстанавливается ?
После пробивки канала ?
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374220
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
По разному, бывает и быстро в пределах 1 секунды,
бывает и около 10 секунд

Вообщем корелляцие примерно такие-же, когда вынимаешь сетевой кабель,
значок unplugged появляется тоже не сразу а через некоторое время (это время бывает короткое бывает и более длинное)

Хотя может эти времена от сетевой карточки зависят ?
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374338
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДопустим делаем запрос к базе данных через ADO

Интересно! У меня при обломе сети и работе через один TADOConnection приходиться закрывать и снова открывать соединение. А у вас оно само восстанавливается. Вы не используете TADOConnection, а для каждого компонента ConnectionString? Ибо ADO не может само узнать, что связь на физическом уровне пропала.
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374377
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
Все правильно ADOConnection и не знает что соединение востановилось или потерялось
При запросе ловится код ошибки ADO -2147467259 - он соответствует потери соединения и принудительно закрывается и открывается ADOConnection в этом случае
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374424
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда чего вы хотите?
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374607
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
Так ведь-же не сразу соединение делается :(

Исходное состояние сетевой кабель разомкнут:

1.Вставляем кабель
2.Выполняем к примеру код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  fAdo:=TAdoConnection.Create(Self);
  fAdo.LoginPrompt:=False;
  fAdo.ConnectionString:=fstr;
  fAdo.ConnectionTimeout:= 15 ;

  try
   fAdo.Open;
  except
   on E:Exception do
    begin
     RaiseError('Ошибка соединения',E.Message)
    end;
  end; 
 


Результат Winsock Error

Второй вариант

Исходное состояние сетевой кабель разомкнут:

1.Вставляем кабель
2. Ждем время t=n (секунд)
3.Выполняем это же код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  fAdo:=TAdoConnection.Create(Self);
  fAdo.LoginPrompt:=False;
  fAdo.ConnectionString:=fstr;
  fAdo.ConnectionTimeout:= 15 ;

  try
   fAdo.Open;
  except
   on E:Exception do
    begin
     RaiseError('Ошибка соединения',E.Message)
    end;
  end; 
 


В результате нормальное соединение


Обычно n это от 1 до 20 секунд, чтобы успешно прошел Второй вариант

Мне надо чтобы n стремилась к нулю, чтобы соединение происходило сразу
как воткнули кабель
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32374626
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никак...
при отключении сети нт делает спулл затребованных коннекшенов затем просто реинициализация сокетов происходит... при этом обработка идет по принципу ведра с пустым дном - первый пришел - последний ушел - поэтому у такие интервалы во времени.
яб на твоем месте не парился - и перед запросами проверял подключение - а затем выполнял запрос. или в случае отключения - циклически просто долбился туда куда надо - тогда гарантированно твои запросы будут первыми в очереди.
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32375565
hyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по принципу ведра с пустым дном - первый пришел - последний ушелА интересная интерпретация стека и lifo)
...
Рейтинг: 0 / 0
Обрыв и восстановление сетевого соединения
    #32375575
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стек бывает в канализации
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрыв и восстановление сетевого соединения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]