我的網絡上有一個設備(具有靜態IP的wi-fi),其靜態IP地址爲192.168.1.17。我在linux的C++程序中使用它作爲我的代碼的一部分,但是如果它斷開/關閉,程序將停止響應,因爲它試圖從不存在的位置提取數據。有沒有辦法可以檢查它是否斷開連接,以便在程序失控之前停止該程序?感謝我所知道的有益迴應!檢查lan設備是否使用linux中的C++連接
0
A
回答
0
使用的ioctl SIOCGIFFLAGS
檢查是界面運行起來:
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, ifrname);
if(ioctl(dummy_fd, SIOCGIFFLAGS, &ifr) != -1)
{
up_and_running = (ifr.ifr_flags & (IFF_UP | IFF_RUNNING)) == (IFF_UP | IFF_RUNNING);
}
else
{
// error
}
輸入變量是ifrname
。它應該是接口名稱「eth0的」,eth1" 的,‘ppp0的’......
因爲ioctl()
需要一個文件描述符作爲參數,你可以使用例如用於一些臨時UDP套接字:
dummy_fd = socket(AF_INET, SOCK_DGRAM, 0);
記得關閉插座,當不再使用。
0
,然後再繼續嘗試ping 192.168.1.17
int status = system("ping -c 2 192.168.1.17");
if (-1 != status)
{
ping_ret = WEXITSTATUS(status);
if(ping_ret==0)
cout<<"Ping successful"<<endl; ////Proceed
else
cout<<"Ping not successful"<<endl; ///Sleep and agin check for ping
}
相關問題
- 1. 使用C連接到通過TCP/IP的LAN上的設備使用C
- 2. 檢測字符設備是否在Linux中與termios api(C++)斷開連接
- 3. 如何檢測Windows 8設備是否處於WiFi/LAN或3G Internet連接?
- 4. 檢查連接是否打開或關閉?(在Linux中爲C)
- 5. 檢查3G是否連接始終返回false(即使設備已連接)
- 6. 檢查設備是否連接到互聯網的Swift2
- 7. 如何檢查我的android設備是否有連接?
- 8. 檢查iPhone設備是否與命令行系統連接?
- 9. 我如何檢查是否有Airplay設備連接
- 10. Android - 檢查設備是否連接到互聯網
- 11. 如何檢查Android設備是否連接到藍牙鼠標?
- 12. 檢查設備是否具有網絡連接
- 13. 繼續檢查設備是否具有互聯網連接
- 14. 如何檢查設備是否連接Pyserial
- 15. 檢查是否任何AV設備連接
- 16. 如何檢查Android設備是否連接到網絡?
- 17. 檢查設備是否連接到i-net
- 18. 如何檢查設備是否連接到系統?
- 19. 檢查設備是否已通過無線連接亞行?
- 20. C++ ODBC檢查連接是否成功
- 21. 如何檢查黑莓設備是否連接到互聯網連接?
- 22. unix在Linux上的netcat實用程序,檢查是否連接
- 23. 找出USB設備是否連接。在Linux的紅寶石
- 24. Linux的:可能檢測是否連接USB設備和充電,但關斷
- 25. 如何檢測是否建立了新的Wlan/Lan連接? PC
- 26. 檢查mongoDB是否連接
- 27. 如何使用批處理腳本檢查特定的USB設備(非存儲設備)是否連接到Windows?
- 28. 使用Firebase查找連接的設備
- 29. 檢查設備是否具有連接到inernet不起作用的Android代碼
- 30. Androd - 檢查設備具有Internet連接
如果您使用的是NetworkManager,則可以使用它的API,請參閱https://wiki.gnome.org/Projects/NetworkManager。您可以使用D-Bus API,GLib包裝,請參閱http://sourceforge.net/apps/mediawiki/dbus-cplusplus/index.php?title=Main_Page –
您的代碼在192.168.1.17上運行? –