TCP编程之网卡信息获取和域名解析-世界新视野
TCP IP传输协议,即传输控制 网络协议,也叫作网络通讯协议。它是在网
TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用户提供一种通用、一致的通信服务。是Internet采用的协议标准。
(资料图片)
TCP/IP是一组通信协议的代名词,是由一系列协议组成的协议簇。它本身指两个协议集:
TCP(传输控制协议)。 IP(互联网络协议)。
TCP/IP协议的基本传输单位是数据包(Datagram)。
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
获取本地网卡信息的方法有很多种,在Linux命令行下我们可以通过ifconfig命令查询网卡信息。
ioctl(input/output control)是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。
ioctl函数原型:#include int ioctl(int fd, unsigned long request, ...);形参:fd --文件描述符 request --请求命令 第三个参数为可变参数,该参数填写取决于request 命令;返回值:一般成功返回0 网络相关的请求划分为6 类:
套接口操作文件操作接口操作ARP 高速缓存操作路由表操作流系统下表列出了网络相关ioctl 请求的request 参数以及arg 地址必须指向的数据类型:
获取网卡信息示例:
#include #include #include #include #include #include #include #include int main(){ int i=0;int sockfd;/*创建网络套接字*/if((sockfd = socket(AF_INET, SOCK_STREAM,0))<0){ printf("socket errorn");return -1;} struct ifreq ifcu_req[4];//网卡信息结构体struct ifconf ifc={.ifc_len=sizeof(ifcu_req),//缓冲区大小.ifc_req=ifcu_req,};struct ifreq b_addr;int ret=ioctl(sockfd,SIOCGIFCONF, &ifc);//获取网络接口信息structsockaddr boardaddr;struct sockaddr_in addr;printf("ret=%dn",ret);char mac[6];int j=0;int count=ifc.ifc_len/sizeof(struct ifreq);//计算获取到的网卡信息个数for(i=0;i 3.域名解析
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
#include extern int h_errno;struct hostent *gethostbyname(const char *name);函数功能:域名解析形参:name --域名返回值:struct hostent { char *h_name; /* 主机的正式名称 */ char **h_aliases; /* 别名列表*/ int h_addrtype; /* 主机地址类型*/ int h_length; /* 地址长度*/ char **h_addr_list; /*地址列表 */ }void herror(const char *s); //错误输出const char *hstrerror(int err);//根据错误编号返回错误消息字符串 示例
#include #include #include #include #include #include int main(int argc,char *argv[]){if(argc!=2){printf("格式:./app <域名>n");return 0;}//域名解析struct hostent *host_info=gethostbyname(argv[1]);if(host_info==NULL){printf("err=%d,%sn",h_errno,hstrerror(h_errno));return 0;}int i=0;struct in_addr addr;printf("主机名:%sn",host_info->h_name);for(i=0;host_info->h_aliases[i]!=0;i++){printf("主机别名:%sn",host_info->h_aliases[i]);}for(i=0;host_info->h_addr_list[i]!=0;i++){memcpy(&addr,host_info->h_addr_list[i],sizeof(addr));printf("ip地址:%sn",inet_ntoa(addr));}} 运行效果:
获取邦定ip地址信息getsockname
getsockname()函数用于获取一个套接字的名字。它用于一个已捆绑或已连接套接字,本地地址将被返回。本调用特别适用于如下情况:未调用bind()就调用了connect(),这时唯有getsockname()调用可以获知系统内定的本地地址。在返回时,namelen参数包含了名字的实际字节数。
#include int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);函数功能:获取sockfd绑定的ip地址和端口号信息形 参:sockfd --网络套接字 addr --保存返回的ip地址和端口号信息 addrlen --addr缓冲区大小(必须由用户设置大小,函数调用成功返回实际addr大小)返回值:成功返回0,失败-1 示例:
#include #include /* See NOTES */#include #include #include #include #include /* superset of previous */#include int main(int argc,char *argv[]){if(argc!=3){printf("格式:./app <服务器端口号> <服务器IP>n");return 0;}/*创建网络套接字*/int sockfd=socket(AF_INET, SOCK_STREAM,0);if(sockfd==-1){printf("创建网络套接字失败n");return 0;}/*连接服务器*/struct sockaddr_in addr={.sin_family=AF_INET,//IPV4.sin_port=htons(atoi(argv[1])),//服务器端口号.sin_addr={.s_addr=inet_addr(argv[2]),//服务器IP}};if(connect(sockfd,(struct sockaddr *)&addr,sizeof(addr))){printf("连接服务器失败n");return 0;}printf("服务器连接成功n");struct sockaddr_in c_addr;socklen_t addrlen=sizeof(c_addr);getsockname(sockfd,(struct sockaddr *)&c_addr, &addrlen);printf("本地信息%s:%dn",inet_ntoa(c_addr.sin_addr),ntohs(c_addr.sin_port));while(1){}} 审核编辑:汤梓红 关键词:
[ 相关文章 ]
TCP IP传输协议,即传输控制 网络协议,也叫作网络通讯协议。它是在网
本文内容是由小编为大家搜集关于国元证券股票行情,以及国元证券股票行
1 一个章鱼足,大概两百七十克,先用冷水解冻,洗干净备用。2 把章鱼足
5月30日,星巴克中国在内地上新生咖系列PinkDrink,一时间,粉色席卷各
“什么都大不过粮食!人要连粮食都吃不上了谁还吃瓜子?”近日,陕西兴
6月2日,中国电建集团与内蒙古乌拉特中旗人民政府签署了2×300MW压缩空
6月5日,杭州热电再次涨停,收盘价为42 41元,再创历史新高。5日晚间,
1、被你的问题雷死的!。相信通过小玉儿这篇文章能帮到你,在和好朋友
1、个人简介为某人的简要介绍。2、个人简介可以是表格的形式,也可以是
永吉县气象台2023年6月5日13时35分发布雷电黄色预警信号:预计未来6小
6月5日,西安市发展改革委发布的价格监测显示,今年以来,西安市面粉价
1、3月19日,vivo将于乌镇发布全面屏新机X9全面屏、屏下指纹成为该机最
创造与模仿:AI绘画与AI换脸的目标差异在人工智能技术的不断进步下,AI
1、方法:1 我们首先打开电脑上安装的火狐浏览器 2 我们点击右上角
来为大家解答以上的问题。怎么制作流程图最简单,怎么做流程图这个很多
1、网络用语666的谐音是“牛牛牛”牛牛牛,通常用于形容某人或某事物非
据悉,正泰安能是低压电器龙头正泰电器旗下唯一的户用光伏业务平台,
1、白酒芳香浓郁,醇和软润,风味多样。2、我国的名白酒,历史悠久,在
近日,护国味业-陈醋基地纳入泸州市研学体验传承推广点位(科普教育主
原标题:“金花”挺进法网女双16强天津日报讯(记者苏娅辉)法网昨天展
[ 相关新闻 ]
Copyright 2015-2022 西南医院网 版权所有 备案号:皖ICP备2022009963号-8 联系邮箱:39 60 29 14 2@qq.com