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

学习网站建设/深圳网络推广外包

学习网站建设,深圳网络推广外包,一键优化ppt,建设网站的公司要什么资质#include#include#include#include#include#include#include#include#include/**ioctl函数是与内核交互的一种方法,使用ioctl函数与内核协议栈进行交互ioctl函数可操作I/O请求,文件请求与网络接口请求网络接口请求的几个结构体:struct ifreq{#define IFH…

#include

#include

#include

#include

#include

#include

#include

#include

#include

/**

ioctl函数是与内核交互的一种方法,使用ioctl函数与内核协议栈进行交互

ioctl函数可操作I/O请求,文件请求与网络接口请求

网络接口请求的几个结构体:

struct ifreq{

#define IFHWADDRLEN 6 //6个字节的硬件地址,即MAC

union{

char ifrn_name[IFNAMESIZ];//网络接口名称

}ifr_ifrn;

union{

struct sockaddr ifru_addr;//本地IP地址

struct sockaddr ifru_dstaddr;//目标IP地址

struct sockaddr ifru_broadaddr;//广播IP地址

struct sockaddr ifru_netmask;//本地子网掩码地址

struct sockaddr ifru_hwaddr;//本地MAC地址

short ifru_flags;//网络接口标记

int ifru_ivalue;//不同的请求含义不同

struct ifmap ifru_map;//网卡地址映射

int ifru_mtu;//最大传输单元

char ifru_slave[IFNAMSIZ];//占位符

char ifru_newname[IFNAMSIZE];//新名称

void __user* ifru_data;//用户数据

struct if_settings ifru_settings;//设备协议设置

}ifr_ifru;

}

#define ifr_name ifr_ifrn.ifrn_name;//接口名称

#define ifr_hwaddr ifr_ifru.ifru_hwaddr;//MAC

#define ifr_addr ifr_ifru.ifru_addr;//本地IP

#define ifr_dstaddr ifr_ifru.dstaddr;//目标IP

#define ifr_broadaddr ifr_ifru.broadaddr;//广播IP

#define ifr_netmask ifr_ifru.ifru_netmask;//子网掩码

#define ifr_flags ifr_ifru.ifru_flags;//标志

#define ifr_metric ifr_ifru.ifru_ivalue;//接口侧度

#define ifr_mtu ifr_ifru.ifru_mtu;//最大传输单元

#define ifr_map ifr_ifru.ifru_map;//设备地址映射

#define ifr_slave ifr_ifru.ifru_slave;//副设备

#define ifr_data ifr_ifru.ifru_data;//接口使用

#define ifr_ifrindex ifr_ifru.ifru_ivalue;//网络接口序号

#define ifr_bandwidth ifr_ifru.ifru_ivalue;//连接带宽

#define ifr_qlen ifr_ifru.ifru_ivalue;//传输单元长度

#define ifr_newname ifr_ifru.ifru_newname;//新名称

#define ifr_seeting ifr_ifru.ifru_settings;//设备协议设置

struct ifmap{//网卡设备的映射属性

unsigned long mem_start;//开始地址

unsigned long mem_end;//结束地址

unsigned short base_addr;//基地址

unsigned char irq;//中断号

unsigned char dma;//DMA

unsigned char port;//端口

}

struct ifconf{//网络配置结构体是一种缓冲区

int ifc_len;//缓冲区ifr_buf的大小

union{

char__user *ifcu_buf;//绘冲区指针

struct ifreq__user* ifcu_req;//指向ifreq指针

}ifc_ifcu;

};

#define ifc_buf ifc_ifcu.ifcu_buf;//缓冲区地址

#define ifc_req ifc_ifcu.ifcu_req;//ifc_req地址

(1)获得配置选项SIOCGIFCONF获得网络接口的配置情况 需要填充struct ifreq中ifr_name变量

(2)其它选项获取填充struct ifreq的ifr_name

**/

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

int s;

int err;

s=socket(AF_INET,SOCK_DGRAM,0);

if(s<0){

perror("socket error");

return;

}

//传入网络接口序号,获得网络接口的名称

struct ifreq ifr;

ifr.ifr_ifindex=2;//获得第2个网络接口的名称

err=ioctl(s,SIOCGIFNAME,&ifr);

if(err){

perror("index error");

}else{

printf("the %dst interface is:%s\n",ifr.ifr_ifindex,ifr.ifr_name);

}

//传入网络接口名称,获得标志

memcpy(ifr.ifr_name,"eth0",5);

err=ioctl(s,SIOCGIFFLAGS,&ifr);

if(!err){

printf("SIOCGIFFLAGS:%d\n",ifr.ifr_flags);

}

//获得MTU和MAC

err=ioctl(s,SIOCGIFMTU,&ifr);

if(!err){

printf("SIOCGIFMTU:%d\n",ifr.ifr_mtu);

}

//获得MAC地址

err=ioctl(s,SIOCGIFHWADDR,&ifr);

if(!err){

unsigned char* hw=ifr.ifr_hwaddr.sa_data;

printf("SIOCGIFHWADDR:%02x:%02x:%02x:%02x:%02x:%02x\n",hw[0],hw[1],hw[2],hw[3],hw[4],hw[5]);

}

//获得网卡映射参数 命令字SIOCGIFMAP

err=ioctl(s,SIOCGIFMAP,&ifr);

if(!err){

printf("SIOCGIFMAP,mem_start:%d,mem_end:%d,base_addr:%d,ifr_map:%d,dma:%d,port:%d\n",ifr.ifr_map.mem_start,ifr.ifr_map.mem_end,ifr.ifr_map.base_addr,ifr.ifr_map.irq,ifr.ifr_map.dma,ifr.ifr_map.port);

}

//获得网卡序号

err=ioctl(s,SIOCGIFINDEX,&ifr);

if(!err){

printf("SIOCGIFINDEX:%d\n",ifr.ifr_ifindex);

}

//获取发送队列的长度

err=ioctl(s,SIOCGIFTXQLEN,&ifr);

if(!err){

printf("SIOCGIFTXQLEN:%d\n",ifr.ifr_qlen);

}

//获取网络接口IP

struct sockaddr_in *sin=(struct sockaddr_in*)&ifr.ifr_addr;//保存的是二进制IP

char ip[16];//字符数组,存放字符串

memset(ip,0,16);

err=ioctl(s,SIOCGIFADDR,&ifr);

if(!err){

inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);//转换的字符串保存到ip数组中,第二个参数是要转换的二进制IP指针,第三个参数是转换完成存放IP的缓冲区,最后一个参数是缓冲区的长度

printf("SIOCGIFADDR:%s\n",ip);

}

//查询目标IP地址

err=ioctl(s,SIOCGIFDSTADDR,&ifr);

if(!err){

inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);

printf("SIOCGIFDSTADDR:%s\n",ip);

}

//查询子网掩码

err=ioctl(s,SIOCGIFNETMASK,&ifr);

if(!err){

inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);

printf("SIOCGIFNETMASK:%s\n",ip);

}

//设置IP地址,设置网络接口

inet_pton(AF_INET,"222.27.253.108",&sin->sin_addr.s_addr);//将字符串IP转换成二进制

err=ioctl(s,SIOCSIFADDR,&ifr);//发送设置本机ip地址请求命令

if(!err){

printf("check IP-----");

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

memcpy(ifr.ifr_name,"eth0",5);

ioctl(s,SIOCGIFADDR,&ifr);

inet_ntop(AF_INET,&sin->sin_addr.s_addr,ip,16);

printf("%s\n",ip);

}

//得到接口的广播地址

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

memcpy(ifr.ifr_name,"eth0",5);

ioctl(s,SIOCGIFBRDADDR,&ifr);

struct sockaddr_in *broadcast=(struct sockaddr_in*)&ifr.ifr_broadaddr;

//转换成字符串

inet_ntop(AF_INET,&broadcast->sin_addr.s_addr,ip,16);//inet_ntop将二进制IP转换成点分十进制的字符串

printf("BROADCAST IP:%s\n",ip);

close(s);

}

运行结果:

http://www.lbrq.cn/news/1605799.html

相关文章:

  • 安阳做网站公司/网络营销和网站推广的区别
  • wordpress评论 图片/谷歌seo是指什么意思
  • 服务平台管理系统/seo综合排名优化
  • python适合网站开发吗/网络推广一个月工资多少
  • 城乡规划师证报考条件/广州seo推荐
  • 全球疫情防控最新消息/东莞网络优化排名
  • 那个网站都有做莱的图片/企业网站的主要类型有
  • 无锡企业免费建站/2023年5月最新疫情
  • 桂林两江四湖景区/武汉seo网站优化
  • WordPress全站展示/58同城关键词怎么优化
  • 自驾游网站建设/湖南seo博客seo交流
  • 企业网站建设背景/seo网络推广报价
  • 做网站百度云/合肥网络公司
  • 永登网站设计与建设/怎么创建自己的网站
  • 公安备案网站老是通不过/媒体发稿推广
  • 建设自己的淘宝优惠券网站/搜索引擎优化搜索优化
  • 怎样做网站的源代码/成品网站源码
  • 在西部数码做的企业网站不能与阿里巴巴网站相连接/市场营销计划书模板
  • 外贸在线网站建站/网站引流推广
  • 怎么做网站的思维导图/旅游营销推广方案
  • 成都本地推广平台/百度快速seo优化
  • 劳务公司/seo怎么做优化排名
  • 网站阵地建设/seo网络优化公司
  • 襄阳大型网站建设/东莞网站建设做网站
  • 石嘴山网站建设公司/搜索网站关键词
  • 东莞新增确诊名单/seo搜索优化公司排名
  • 深南花园裙楼+网站建设/天津抖音seo
  • 手机建网站花钱吗/西昌seo快速排名
  • 建网站一年要多少钱/重庆seo公司怎么样
  • 旅游类网站建设受众分析/seo有哪些网站
  • 【量化交易】日内交易有效特征因子
  • 音视频学习(五十):音频无损压缩
  • 推荐系统学习笔记(九)曝光过滤 Bloom Filter
  • webrtc弱网-QualityScaler 源码分析与算法原理
  • LangGraph认知篇-Command函数
  • SpringBoot 02 AOP