Russian Qt Forum

Qt => Работа с сетью => Тема начата: vulko от Апреля 25, 2014, 12:53



Название: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: vulko от Апреля 25, 2014, 12:53
Погуглил по вопросу нотификаций выдергивания шнура локалки и т.п. в qt, но кроме как постоянной проверки статуса ручками особых идей не обнаружил.

Есть ли возможность на линухе подписаться на нотификации об отключении сетевого шнура? Или может в QT есть такая штука?


Название: Re: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: Alex Custov от Апреля 25, 2014, 14:23
Раньше это можно было делать с помощью пакета iproute (iproute-dev), и функции rtnl_listen(). В последней Убунте iproute-dev уже нет, там рекомендуют использовать libmnl/libnl и аналоги.


Название: Re: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: vulko от Апреля 28, 2014, 14:36
Попробовал делать через QNetworkInterface.flags() - флаги IsUp и IsActive всегда есть, независимо от того подключен ли шнур или нет.

Пробовал через QNetworkConfigurationManager.isOnline() - когда отключаю, сперва выдает false. Но через некоторое время начинает выдавать true.

Неужели в QT такая печалька со статусом подключения?


Название: Re: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: Fregloin от Июня 18, 2014, 19:53
скорее всего придется использовать нативные апи. ну еще как вариант попробовать через dbus - ведь как то же всплывают сообщения о потере связи.


Название: Re: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: Bepec от Июня 18, 2014, 21:01
Там используется механизм для сокрытия кратковременных разрывов связи. Очень удобно и полезно, но это головная боль для разработчика.
На винде к примеру даже недоступные сервисы могли до 5 минут пинговаться и опознаваться после физической потери соединения.

Я поступал проще - keep alive соединение с неким сайтом и по нему ориентировался.


Название: Re: Нотификация статуса сети (network cable unplugged нотификация)
Отправлено: vulko от Июня 23, 2014, 12:38
Я поступал проще - keep alive соединение с неким сайтом и по нему ориентировался.

это хорошо когда есть шлюз в интернет... :)

Цитировать
скорее всего придется использовать нативные апи. ну еще как вариант попробовать через dbus - ведь как то же всплывают сообщения о потере связи.
спс, попробую поковырять iproute пакет