Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Обрыв сетевого подключения. Как?   Найти похожие ветки 

 
GanibalLector ©   (2010-04-27 22:02) [0]

Есть у меня промышленный модем. Все как положено, с RS232 интерфейсом. Так вот, подключил я его к ПК, настроил соединение, установил соединение(заимел статический IP). Интернет есть, все работает.

Далее. Я специально (случайно) отключаю антенну от модема. После этого события интернета, естественно, нет. Но!!! Сетевое подключение есть. Т.е. я могу заглянуть в свойства, увидеть количество отправленных и полученных пакетов и т.д. Т.е. повторю еще раз, соединение есть, а самого Интернета нет.  

И последнее. Есть мой код, который что-то делает. Так вот, в коде, я получаю IP адреса всех интерфейсов и смотрю, есть ли в этом списке нужный мне IP (который я получил при коннекте через модем). Беда в том, что несмотря на отсутствие антены соединение не разрывается. Т.е. мой код и ОС в целом, считают, что все нормально и соединение есть.

Как быть? Какие будут мысли? Задача – оборвать соединение при отсутствии антенны(или при плохом канале связи).

Заранее спасибо.


 
Игорь Шевченко ©   (2010-04-27 22:12) [1]


> Обрыв сетевого подключения. Как?


ну, если поднатужиться...


 
Суслик__   (2010-04-27 22:32) [2]

я думаю периодически что-то пинговать.


 
Игорь Шевченко ©   (2010-04-27 22:44) [3]


> Т.е. я могу заглянуть в свойства, увидеть количество отправленных
> и полученных пакетов и т.д. Т.е. повторю еще раз, соединение
> есть, а самого Интернета нет.


Это он в ужасе ищет интернет...


 
DVM ©   (2010-04-27 23:33) [4]


> GanibalLector ©   (27.04.10 22:02) 

Какой прок в том, что ты узнаешь, есть у тебя в данный момент соединение с Интернет или нет? Ну узнал ты, щас оно есть, а через мгновение нет. Начни что то делать и сразу узнаешь по кодам ошибок сетевых функций.


 
GanibalLector ©   (2010-04-28 01:34) [5]

> Начни что то делать и сразу узнаешь по кодам ошибок сетевых функций.

А что я узнаю? Это у меня сервер. Создал поток и жду коннектов. Когда слушающий поток создавался, инет был. Когда инет "потерялся" поток в простое, ждет клиентов.


 
Суслик_ ©   (2010-04-28 01:39) [6]

я может чего-то не понимаю, но у меня есть ощущение, что гарантированно этого никак не узнаешь средствами система - т.е. не повесишь обработчик OnConnectionLost.

если только не реализовать пинг - либо клиент сервер, либо сервер еще кого-то.


 
Германн ©   (2010-04-28 02:15) [7]

И ещё раз присоединюсь к Суслик_ ©.
Хотя эта тематика далека от меня. Но что-то подобное было в моей практике. Когда обрыв сетевого кабеля не определялся системой. (Давно это было.)
Применил метод "Эхо". Если в течение какого-то периода времени не было обращений от клиентов серверу, сервер посылал клиенту сообщение "ECHO"", на которое клиент должен был ответить. Если не отвечал, значит связь потеряна.


 
tesseract ©   (2010-04-28 10:08) [8]


> что все нормально и соединение есть


Рано или поздно скажет "conneсtion lost". Служебные пакеты - те же UDP в принципе считаются за траффик, даже если и не дойдут до получателя. Надо или пинговать или проверять доступность ресурса.


 
GanibalLector ©   (2010-04-28 11:40) [9]

2 Суслик_ ©   (28.04.10 01:39) [6]
>если только не реализовать пинг - либо клиент сервер, либо сервер еще кого-то.

2 Германн ©   (28.04.10 02:15) [7]
>Применил метод "Эхо". Если в течение какого-то периода времени не было обращений от клиентов серверу, сервер посылал клиенту сообщение "ECHO"", на которое клиент должен был ответить.

Тогда еще усложню. На самом деле у меня не инет, а "мобильная сетка". Т.е. мобильный оператор связи, выдал личный VPN. При установлении соединения IP адрес у меня локальный 10.5.Х.Х. Тоже самое и у "клиентов" моего сервера. Это программируемые модемы, которые только и могут что выйти на мой сервер.

Это к тому, что пинговать мне некого.
Судя по всему, остается только один путь. Засекать время отсутствия коннектов от "клиентов" и есть оно превысило какое-то число, то закрывать сервер и сообщать пользователю.

Ладно, спасибо и на этом. Отсутствие решения, тоже решение.


 
KSergey ©   (2010-04-28 11:55) [10]

> Германн ©   (28.04.10 02:15) [7]
> Если в течение какого-то периода времени
> не было обращений от клиентов серверу, сервер посылал клиенту
> сообщение "ECHO"", на которое клиент должен был ответить.
>  Если не отвечал, значит связь потеряна.

К стати да, у нас как-то так же и сделано.
Вот только беда: а если ни один клиент не подконнекчен в текущий момент? Все же плохая связь на сервере - какой-то нонсенс.


 
KSergey ©   (2010-04-28 11:56) [11]

Надо в этой сетке завести еще один-два сервера, и пусть они обмениваются пакетами "на досуге".


 
Anatoly Podgoretsky ©   (2010-04-28 12:08) [12]

> GanibalLector  (28.04.2010 11:40:09)  [9]

Для связи по VPN используются два адреса, клиента и сервера, так что пинговать есть кого, кроме того можно пинговать любой компьютер в сети, если только не предприняты противодействующие меры.


 
DVM ©   (2010-04-28 12:20) [13]


> GanibalLector ©   (28.04.10 01:34) [5]
> > Начни что то делать и сразу узнаешь по кодам ошибок сетевых
> функций.
>
> А что я узнаю? Это у меня сервер.

Я ж говорю, начни что-то делать. Пингуй наконец что нибудь.


 
Anatoly Podgoretsky ©   (2010-04-28 13:00) [14]


> А что я узнаю? Это у меня сервер. Создал поток и жду коннектов.
>  Когда слушающий поток создавался, инет был. Когда инет
> "потерялся" поток в простое, ждет клиентов.

Ну и пусть себе ждет, не дело сервера заботиться о клиентах, соединения устанавливают клиенты, а не сервер. Сервер может только разорвать соединение, по отсутствию активности.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
15-1274819385
Юрий
2010-05-26 00:29
2010.08.27
С днем рождения ! 26 мая 2010 среда


11-1220124808
Dy1
2008-08-30 23:33
2010.08.27
чужая DLL


2-1267686761
cyber-pilot
2010-03-04 10:12
2010.08.27
Скроллеры в мемо


15-1266787803
Юрий
2010-02-22 00:30
2010.08.27
С днем рождения ! 22 февраля 2010 понедельник


2-1269648248
HF-Trade
2010-03-27 03:04
2010.08.27
IDHttp.Post Проблема с залогиниванием