是否有一個Linux功能等同於InetIsOffline
function in Windows(由url.dll
提供),它可以告訴我係統是否連接到互聯網,還是我必須自己做點什麼?是否有與Windows InetIsOffline函數相同的Linux?
我問的原因是我是Lhogho的早期採用者。我發現如何在Windows中做到這一點,並希望開發一些能夠在Linux中提供相同功能的東西。
是否有一個Linux功能等同於InetIsOffline
function in Windows(由url.dll
提供),它可以告訴我係統是否連接到互聯網,還是我必須自己做點什麼?是否有與Windows InetIsOffline函數相同的Linux?
我問的原因是我是Lhogho的早期採用者。我發現如何在Windows中做到這一點,並希望開發一些能夠在Linux中提供相同功能的東西。
您可以通過D-Bus與網絡管理員交談,看看是否有任何連接,但除此之外沒有特定的方式。甚至NM也不總是準確的。
和許多系統根本不運行NM。 – 2011-12-21 00:06:44
您也可以解析下如/proc/net/if_inet6
或/proc/net/tcp
可是你爲什麼想要做一些文件?如果您想檢查某個網站是否可以訪問,只需以編程方式訪問它(例如使用libcurl)。
而且確實發生了一些網站無法訪問,而其他網站仍然有效。
這可能意味着「我有一條默認路由嗎?」,或者至少這是一個合理的實現,恕我直言。所以,只需檢查它的路由表(/proc/net/route
):)。
這當然不適用於IPv6(您需要解析ipv6_route
),但是決定如何處理該問題很複雜。也許葡萄酒源代碼或MSDN文檔可以揭示這個問題。
如果工作站知道連接到「互聯網」的設備的狀態。現在,情況越來越少,因爲調制解調器/路由器接管了「端點」(DHCP客戶端,PPPOE客戶端等,以便允許多個設備)的角色,而不是像往常一樣經常使用自己的工作站習慣於在現代時期。 – 2011-12-20 16:54:21
這是一個荒謬的功能(也很奇怪地命名)......你不應該檢查你是否連接到互聯網(實際上,這是不可能以可靠的方式來決定的),但如果你的資源訪問是可訪問的並且實現適當的錯誤處理。如果您只想檢查*某個*網站是否可訪問,則應該檢查該網站。 – 2011-12-21 00:04:32
@尼克拉斯:是的,這是荒謬的。歡迎來到Windows。 ;) – bugmagnet 2011-12-22 01:57:41