проверить интернет-соединение в Linux с помощью моно? - PullRequest
2 голосов
/ 17 ноября 2009

есть ли способ проверить состояние интернет-соединения в linux с помощью mono

Ответы [ 4 ]

2 голосов
/ 17 ноября 2009

Если это настольное приложение, вы можете запросить NetworkManager (который является диспетчером сетевых подключений на большинстве настольных систем Linux) по шине d, используя библиотеку NDesk.DBus.

См. Пример Банши: http://git.gnome.org/cgit/banshee/tree/src/Core/Banshee.Services/Banshee.Networking/NetworkManager.cs

1 голос
/ 18 ноября 2009

Независимо от того, что вы в конечном итоге используете, оно не будет надежным.

Я все время вижу это с Windows Vista и 7 дома. Я пользуюсь домашней сетью, поэтому мои компьютеры всегда «подключены». Однако они не всегда подключены к Интернету.

Тем не менее, я бы порекомендовал проверить сетевые интерфейсы, как сказал Гонсало. Это ваша лучшая ставка.

Я бы не стал полагаться на присутствие NetworkManager. Я ненавижу это и выключаю, когда могу. Он огромный, неуклюжий, имеет уродливое имя, полагается на мусор, такой как HAL и DBUS. Ранние версии навсегда отталкивали меня, потому что они не работали, если вы не вошли в GUI. Он также собрал обходные пути для ошибок Wi-Fi, которые были совершенно нелепыми в операционной системе с открытым исходным кодом, которая должна была просто исправить первоначальные ошибки. Это привело к тому, что другие менеджеры Wi-Fi и командная строка не могли работать должным образом, и людям было сказано использовать NetworkManager, только потому, что никто не удосужился исправить фактическую ошибку!

1 голос
/ 17 ноября 2009

Помимо того, что Майкл уже предложил для настольного приложения, вы также можете сделать что-то вроде:

foreach (NetworkInterface ni in NetworkInformation.GetAllNetworkInterfaces ()) {
       // Check that any or all of:
       //        -ni.OperationalStatus == OperationalStatus.Up
       //        -that ni.NetworkInterfaceType is ethernet or wireless80211
       //        -ni.GetIPProperties() has a gateway and a DNS server
       // ...
}
0 голосов
/ 17 ноября 2009

Вы можете попытаться открыть ваше соединение, как это необходимо. Если это не удается, выведите сообщение об ошибке. В качестве альтернативы, если вам действительно нужна общая проверка (например, при запуске приложения), вы можете попытаться сделать HTTP-запросы на один или несколько вездесущих сайтов, таких как google.com. (Или какой протокол вы подразумеваете под «интернетом»).

Оформить HttpWebRequest .

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