qks5201314 发表于 2008-06-25 18:57

如何知道设备是否插网线

最近要做个软件实现以下功能,即当检测到设备插网线的时候,让设备工作在有线状态,关闭无线的;当检测到无线的掉线的时候,恢复使用有线;在这个切换的
过程中需要用软件来检测设备是否插了有线,即是否可以有线上网,请朋友们帮兄弟出出注意呢;

chenyx 发表于 2008-06-25 18:59

好像有个ethtool的工具

swordfish.cn 发表于 2008-06-25 21:19

可以参考一下mii-tools的实现。

qks5201314 发表于 2008-06-25 23:14

楼上朋友可能搞错我的意思了,我是做终端软件的,不过还是要感谢您百忙中抽时间给在下回帖;

swordfish.cn 发表于 2008-06-25 23:26

mii-tools中就包含这样的检测。

qks5201314 发表于 2008-06-27 12:05

楼上的朋友,您说的那个mii-tools我以前没接触过,不怎么熟悉的,现在我自己做了一个算法来实现检测是否插网线的功能,
用connect不停的连接一个固定存在的IP地址,如果连接成功,则认为插了有线,如果返回连接超时,则认为没有插网线,
您觉得这样可行吗?

另外在用这个方法实现的过程中遇到一个问题还没有解决,即当拔掉网线的时候connect需要很长时间才能返回连接超时错误,
这个在我的应用需求中3分钟多是不允许的,所以想请教下如何在软件中设置TCP连接超时,最好10S左右就行;

piaobo79 发表于 2008-06-27 15:27

路过说一句,你这样不停的connect这个固定地址岂不是很浪费资源?有点像在进行攻击...还是建议去看mii-tools 的源码

swordfish.cn 发表于 2008-06-27 17:24

原帖由 qks5201314 于 2008-6-27 12:05 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
楼上的朋友,您说的那个mii-tools我以前没接触过,不怎么熟悉的,现在我自己做了一个算法来实现检测是否插网线的功能,
用connect不停的连接一个固定存在的IP地址,如果连接成功,则认为插了有线,如果返回连接 ...

mii-tools 有现成的代码。
而且,插没插网线和连 IP 成不成功是两个概念。

flw2 发表于 2008-06-27 18:37

short get_flags(const char *dev)
{
      struct ifreq ifr;

      bzero((char *)&ifr, sizeof(ifr));
      strcpy(ifr.ifr_name, dev);

      if (ioctl(ioctl_sockid,SIOCGIFFLAGS, (char *)&ifr) < 0)
                return(0);
      return(ifr.ifr_flags);
}

flags = get_flags(ifx->d_name);
if ((flags & IFF_RUNNING) == 0)
没网线

starxing 发表于 2008-06-27 18:43

ethtool就够了
页: [1] 2 3 4
查看完整版本: 如何知道设备是否插网线