嵌入式环境,判断网卡的物理连接
时间:2010-08-06
来源:互联网
同样的代码在Linux PC上运行没问题,到了uclinux下就不行。
代码如下:
#include <sys/types.h>;
#include <sys/socket.h>;
#include <sys/ioctl.h>;
#include <net/if.h>;
#include <linux/sockios.h>;
#include <linux/types.h>;
struct mii_data {
__u16 phy_id;
__u16 reg_num;
__u16 val_in;
__u16 val_out;
};
int main()
{
int skfd;
struct ifreq ifr;
struct mii_data *mii;
if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
exit(1);
}
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ifr.ifr_name[IFNAMSIZ-1] = 0;
if (ioctl(skfd, SIOCGMIIPHY, &ifr) < 0) {
perror("ioctl");
exit(1);
}
mii = (struct mii_data *)&ifr.ifr_data;
mii->reg_num = 0x01;
if (ioctl(skfd, SIOCGMIIREG, &ifr) < 0) {
perror("ioctl");
exit(1);
}
if (mii->val_out & 0x0004)
puts("link ok");
else
puts("no link");
close(skfd);
return 0;
}
嵌入式下无论网线是否插好都显示link ok。
有人遇到这样的问题么,或做过类似的程序么--- 判断网卡的物理连接。
不能用ioctl ( *,SIOCETHTOOL,*),我的环境不支持这个操作
代码如下:
#include <sys/types.h>;
#include <sys/socket.h>;
#include <sys/ioctl.h>;
#include <net/if.h>;
#include <linux/sockios.h>;
#include <linux/types.h>;
struct mii_data {
__u16 phy_id;
__u16 reg_num;
__u16 val_in;
__u16 val_out;
};
int main()
{
int skfd;
struct ifreq ifr;
struct mii_data *mii;
if ((skfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
exit(1);
}
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);
ifr.ifr_name[IFNAMSIZ-1] = 0;
if (ioctl(skfd, SIOCGMIIPHY, &ifr) < 0) {
perror("ioctl");
exit(1);
}
mii = (struct mii_data *)&ifr.ifr_data;
mii->reg_num = 0x01;
if (ioctl(skfd, SIOCGMIIREG, &ifr) < 0) {
perror("ioctl");
exit(1);
}
if (mii->val_out & 0x0004)
puts("link ok");
else
puts("no link");
close(skfd);
return 0;
}
嵌入式下无论网线是否插好都显示link ok。
有人遇到这样的问题么,或做过类似的程序么--- 判断网卡的物理连接。
不能用ioctl ( *,SIOCETHTOOL,*),我的环境不支持这个操作
作者: xiaoQ008 发布时间: 2010-08-06
查一下你板子的网卡驱动 肯定有函数是判断物理连接的,因为这是必须的。
如果在ioctl里面没实现的话,你可以把它添加上去。
如果在ioctl里面没实现的话,你可以把它添加上去。
作者: klanet 发布时间: 2010-08-06
网卡驱动不是我写的,内核都是编译好的,
作者: xiaoQ008 发布时间: 2010-08-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28