我想检测现在连接了哪个接口;我有三个3g调制解调器连接和两个局域网连接到服务器(我的设备不支持wlan)。我的意思是连接的类型并不重要,但接口名称和细节对我来说很重要。我想检测我用C++编写的程序中的连接接口。 ?请告诉我如何检测在C连接的接口++(root权限是没有问题的。)在linux中使用C++检测连接的接口
4
A
回答
3
5
使用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);
记得关闭插座,当不再使用。
1
你也可以使用netlink路由套接字。请参阅libnetlink库或man 7 netlink和man 7 rtnetlink。
相关问题
- 1. 在C#中检测网络状态(连接 - 断开连接)
- 2. 检测连接
- 3. 使用C/C++接口的人脸检测库
- 4. 在C++中使用C#接口或在C#中使用C++接口
- 5. 在c中使用接口#
- 6. 连接池检测
- 7. 在linux中检测屏幕断开连接
- 8. 如何在linux/Qt中检测USB连接
- 9. 在Linux中检测网络连接类型
- 10. 如何检测C中的套接字断开连接#
- 11. 使用mono在linux中检查互联网连接?
- 12. 如何使用C/C++在Windows中确定连接的WLAN WLAN接口?
- 13. C#检测远程协助连接
- 14. 检测USB连接 - C#.Net CF 3.5
- 15. 检查连接是否打开或关闭?(在Linux中为C)
- 16. C socket(Linux)不会连接
- 17. 检测到域的连接
- 18. Linux下C++中的SSH连接
- 19. 检测传入的套接字连接
- 20. 在StructureMap中连接通用接口
- 21. 用C Linux的网络接口使用监控/ C++
- 22. 使用C/C++与mySQL数据库进行接口连接?
- 23. 在.NET中检测3G网络连接
- 24. 检测Internet连接,如在Gmail中Javascript
- 25. 在WinPE中检测AC电源连接?
- 26. 在android中检测互联网连接
- 27. C#,使用接口
- 28. 在C中使用接口的问题#
所以......除了想要东西的哲学之外,还有一个问题吗? – WhozCraig 2013-04-10 05:53:29
@WhozCraig yes;如何? – Lrrr 2013-04-10 06:36:14