如何檢測網絡適配器是否連接?我只能找到使用NSReachability來檢測互聯網連接的例子,但我想要檢測一個非互聯網連接。在eth0上獲得IP地址應該可以工作?我只在Mac上工作。檢測任何連接的網絡
回答
在蘋果的技術說明TN1145提到用於獲取網絡接口的狀態,3種方法Getting a List of All IP Addresses:
- 系統配置框架
- 開放傳輸API
- BSD套接字
系統配置框架:這是Apple推薦的方式,TN1145中有示例代碼。其優點是它提供了一種獲取接口配置變化通知的方法。
Open Transport API: TN1145中也有示例代碼,否則我不能多說。 (Apple網站上只有「傳統」文檔。)
BSD套接字:這似乎是獲取接口列表和確定連接狀態(如果您不需要動態更改通知)。
以下代碼演示如何找到所有「正在運行」的IPv4和IPv6接口。
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <ifaddrs.h>
#include <net/if.h>
#include <netdb.h>
struct ifaddrs *allInterfaces;
// Get list of all interfaces on the local machine:
if (getifaddrs(&allInterfaces) == 0) {
struct ifaddrs *interface;
// For each interface ...
for (interface = allInterfaces; interface != NULL; interface = interface->ifa_next) {
unsigned int flags = interface->ifa_flags;
struct sockaddr *addr = interface->ifa_addr;
// Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
if ((flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING)) {
if (addr->sa_family == AF_INET || addr->sa_family == AF_INET6) {
// Convert interface address to a human readable string:
char host[NI_MAXHOST];
getnameinfo(addr, addr->sa_len, host, sizeof(host), NULL, 0, NI_NUMERICHOST);
printf("interface:%s, address:%s\n", interface->ifa_name, host);
}
}
}
freeifaddrs(allInterfaces);
}
非常感謝,迄今爲止的最佳答案。我現在沒有時間去嘗試,但除非在未來6小時內有更好的下降,否則我會接受。 –
@AndreasBergström:沒關係。如果它有幫助,我很高興。 –
您可以使用Apple提供的Reachability代碼。 這裏的link你可以得到「可達性」的源代碼:
你也可以下載這個文件:TestWifi in Github。它會告訴你如何實現Reachability類。
希望這可以幫助你。
您提供的可訪問性鏈接適用於iOS。 –
- 1. 檢測任何連接網絡的人
- 2. 檢測網絡連接
- 3. 如何檢測網絡斷開連接?
- 4. 在.NET中檢測3G網絡連接
- 5. 檢測網絡連接帶寬(Android)
- 6. 在Android上檢測網絡連接?
- 7. Xcode 4.2檢測網絡連接
- 8. iOS檢測無網絡連接
- 9. 如何檢測互聯網在android熱點網絡連接
- 10. 在C#中檢測網絡狀態(連接 - 斷開連接)
- 11. 檢查網絡連接
- 12. 檢查網絡連接iPhone
- 13. 如何檢測離子中的網絡連接2
- 14. 如何檢查網絡連接?
- 15. 如何檢測是否有網絡攝像頭連接到PC?
- 16. 如何檢測網絡攝像頭是否連接使用java
- 17. 如何檢測並通過ipad編程連接到3G網絡
- 18. 網頁瀏覽器控件,檢測網絡連接
- 19. 檢測互聯網連接
- 20. 檢測互聯網連接
- 21. C#測試恆定的網絡連接
- 22. 連接到我的網絡的檢測設備
- 23. 檢測服務器連接到的網絡的名稱
- 24. 檢查網絡連接的android
- 25. Android的 - 檢查網絡連接
- 26. 檢查Flash中的網絡連接?
- 27. 檢查libGDX中的網絡連接
- 28. 檢查片段中的網絡連接
- 29. 在android中的網絡連接檢查
- 30. Swift中的IPv6網絡上的網絡連接檢查崩潰
你是工作在iOS,Mac或兩者兼而有之? – Bryan
只有Mac,謝謝。 –
好吧,我只在iPhone上試過這個,所以我的答案可能不適用於Mac。我會看看我是否可以做更多的研究。 – Bryan