当前位置: 首页 > news >正文

商务网站制作工程师/长沙seo培训班

商务网站制作工程师,长沙seo培训班,旅游攻略网站开发,企业营销模式最近有个需求需要检测RJ45网卡的网线有没有接上,而最近正在了解Netlink相关资料,刚好也看下通过Netlink可以进行检测,故在此做下粗略笔记:1.首先要创建一个Netlink Socket,在用户层使用如下参数来调用socket()函数&…

最近有个需求需要检测RJ45网卡的网线有没有接上,而最近正在了解Netlink相关资料,刚好也看下通过Netlink可以进行检测,故在此做下粗略笔记:

1.首先要创建一个Netlink Socket,在用户层使用如下参数来调用socket()函数:fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);

上面这个函数第一个参数必须是AF_NETLINK或PF_NETLINK,这两个标志在Linux下是一样的,第二个参数可以是SOCK_RAW或SOCK_DGRAM(对应用到TCP或UDP协议),而最后一个参数NETLINK_ROUTE为“路由守护进程”,用于接收来自内核的路由通知事件。

2.将上面创建的Socket绑定addr.nl_family = AF_NETLINK;

addr.nl_groups = RTNLGRP_LINK; //指定接收路由多播组消息

bind(fd, (struct sockaddr*)&addr, sizeof(addr));

上面将创建的socket与相应的协议族和组进行绑定,接下来通过读fd这个socket来获得相应的消息数据struct nlmsghdr,再对该结构体数据进行判断来获得网线是接上或是拔掉,相应的源码如下:#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define BUFLEN 20480

int main(int argc, char *argv[])

{

int fd, retval;

char buf[BUFLEN] = {0};

int len = BUFLEN;

struct sockaddr_nl addr;

struct nlmsghdr *nh;

struct ifinfomsg *ifinfo;

struct rtattr *attr;

fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);

setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &len, sizeof(len));

memset(&addr, 0, sizeof(addr));

addr.nl_family = AF_NETLINK;

addr.nl_groups = RTNLGRP_LINK;

bind(fd, (struct sockaddr*)&addr, sizeof(addr));

while ((retval = read(fd, buf, BUFLEN)) > 0)

{

for (nh = (struct nlmsghdr *)buf; NLMSG_OK(nh, retval); nh = NLMSG_NEXT(nh, retval))

{

if (nh->nlmsg_type == NLMSG_DONE)

break;

else if (nh->nlmsg_type == NLMSG_ERROR)

return;

else if (nh->nlmsg_type != RTM_NEWLINK)

continue;

ifinfo = NLMSG_DATA(nh);

printf("%u: %s", ifinfo->ifi_index,  (ifinfo->ifi_flags & IFF_LOWER_UP) ? "up" : "down" );

attr = (struct rtattr*)(((char*)nh) + NLMSG_SPACE(sizeof(*ifinfo)));

len = nh->nlmsg_len - NLMSG_SPACE(sizeof(*ifinfo));

for (; RTA_OK(attr, len); attr = RTA_NEXT(attr, len))

{

if (attr->rta_type == IFLA_IFNAME)

{

printf(" %s", (char*)RTA_DATA(attr));

break;

}

}

printf("\n");

}

}

return 0;

}

将上面的代码保存成文件rj45_pulg_check.c,然后执行命令gcc -o rj45_pulg_check rj45_pulg_check.c进行编译,生成rj45_pulg_check文件,执行该文件后再插拔网线,有如下内容输出:2: down eth0

2: up eth0

注意:上述操作须在网卡驱动加载后进行,并且使用ifconfig里能看到该网卡信息(如没有则执行ifconfig eth0 up),实际上就相当于有没有分配到IP地址(即网络有没有通路)的判断。当我们开关WiFi时也可以检测到。

参考网址:

http://blog.csdn.net/sourthstar/article/details/7975999

http://blog.chinaunix.net/uid-317451-id-92692.html

http://www.jmfq.cn/news/4886317.html

相关文章:

  • 在html中做网站 视频/百度浏览器app下载
  • 做资讯网站需要什么条件/域名备案
  • 信誉好的邯郸网站建设/搜索引擎推广一般包括哪些
  • 注册了网站怎么建设/浏览器里面信息是真是假
  • 微信网页开发教程/搜索引擎优化人员优化
  • 做网站推广都有哪些行业/seo研究中心怎么样
  • 坪山模板网站建设公司/线上宣传渠道
  • 申请网站服务器/全国推广优化网站
  • 工商网企业信息查询/长沙百度推广排名优化
  • 电子商务网站开发开发背景/seo外包公司专家
  • 西安公司注册网站/短链接购买
  • 什么网站可以做高三英语试题/爱网站关键词查询工具
  • 黑马/新乡百度关键词优化外包
  • 大庆网站开发/seo快速收录快速排名
  • 如何使用好单库选品库做网站/市场调研分析报告模板
  • 怎么做网站的域名解析/长春建站服务
  • 什么网站合适做流量/今天今日头条新闻
  • 有个网站做彩盒的/外贸接单网站
  • 教学互动网站开发背景/企业网站建设方案范文
  • 有保障的广州网站建设/茂名seo快速排名外包
  • wx网站开发/重庆seo优化推广
  • 昆明专业做网站多少钱/长沙百度关键词排名
  • 温州市网站制作多少钱/广告联盟官网入口
  • 提高网站排名怎么做/武汉百度开户代理
  • 做论坛网站怎么样备案/百度关键词推广网站
  • 如何创建网站系统教程/搜索引擎优化的技巧有哪些
  • 品牌网站建设小蝌蚪1/抖音怎么运营和引流
  • 高温热泵/枣庄网络推广seo
  • 快速网站建设公司/售卖链接
  • 温州 网站开发/百度一下电脑版