- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 路由套接字编程 路由套接字概论 Uinx系统集成了路由的功能,它包含相应的路由数据库可提供路由信息,用户可以使用命令方式来增加、修改、删除路由表中的项目,也可以只查看路由表中的信息。除此外,应用程序可以使用路由套接字实现对路由表的读/写操作。应用程序通过写操作把消息发送给路由子系统以增加或删除路由:通过读操作接收从路由子系统发送来的路由信息。 在路由套接字上返回的消息中包含数据链路套接字地址结构 struct sockaddr_dl{ uint8_t sdl_len; sa_family_t sdl_family; unit16_t sdl_index; unit8_t sdl_type; unit8_t sdl_nlen; unit8_t sdl_alen; unit8_t sdl_slen; char sdl_data[12]; }; 创建路由套接字 格式: int sockfd; sockfd=socket(AF_ROUTE,SOCK_RAW,0); 通信域为AF_ROUTE,它只能支持原始套接字,只有超级用户才能创建这个套接字。 通过路由套接字发送和接收的消息结构 读取路由表项的程序 #include netinet/in.h #include arpa/inet.h #include sys/types.h #include sys/socket.h #include net/route.h #include sys/param.h #include stdlib.h #include stdio.h #include unistd.h void cp_rtaddrs(int,sockaddr_in *,sockaddr_in **); /*此函数用于将收到的套接字地址拷入套接字地址数据rt_info中。*/ #define BUFLEN (sizeof(rt_msghdr)+512) /*消息缓冲区的长度*/ #define SEQ 1234 /*消息序号*/ int main(int argc,char **argv) { int sockfd; char *buf; pit_t pid; ssize_t n; struct rt_msghdr *rtm; struct sockaddr_in *sa, *rt_info[RTA_NUMBITS]; struct sockaddr_in *sin; if(argc!=2){ printf(usage:%sIPaddress\n,argv[0]); exit(0); } sockfd=socket(AF_ROUTE,SOCK_RAW,0); /*创建路由套接字*/ if(sockfd==-1){ perror(socket error); exit(1); } buf=(char*) calloc(1,BUFLEN); /*分配缓冲区*/ rtm=(rt_msghdr*)buf; rtm-rtm_msglen=sizeof(rt_msghdr)+sizeof(sockaddr_in); /*消息长度*/ rtm-rtm_version=RTM_VERSION; /*版本号*/ rtm-rtm_type=RTM_GET; /* 消息类型*/ rtm-rtm_addrs=RTA_DST; /*位屏蔽字*/ rtm-rtm_pid=pid=getpid(); /*进程号*/ rtm-rtm_seq=SEQ; /*序号*/ sin=(sockaddr_in *) (rtm+1); /*将目的地址填入跟在消息头后的套接字地址项中。*/ sin-sin_family=AF_INET; inet_pton(AF_INET,argv[1],sin-sin_addr); write(sockfd,rtm,rtm-rtm_msglen); /*发送RTM_GET消息给路由套接字*/ /*通个循环读取路由套接字中的消息,直到读到类型为RTM_GET、序号为SEQ、进程ID为当前进程ID的消息,表明该消息是所发消息的回应。*/ do { n=read(sockfd,rtm,BUFLEN); }while(rtm-rtm_type!=RTM_GET||rtm-rtm_seq!=SEQ||rtm-rtm_pid!=pid); sa=(sockaddr_in*) (rtm
您可能关注的文档
- JAVA程序设计教程 第2章 Java概述新.ppt
- JAVA程序设计教程 第3章 Java语言基础新.ppt
- JAVA程序设计教程 第4章 类和对象新.ppt
- JAVA程序设计教程 第6章 字符、字符串、数组新.ppt
- JAVA程序设计教程 第7章 图形用户界面的设计与实现新.ppt
- JAVA程序设计教程 第8章 Applet新.ppt
- Java程序设计教程 赵辉 第1章 Java语言概述新.ppt
- Java程序设计教程 赵辉 第2章 Java程序设计基础新.ppt
- Java程序设计教程 赵辉 第5章 Java基本类库新.ppt
- Java程序设计教程 赵辉 第7章 GUI设计基础新.ppt
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
最近下载
- 4-1 中化泉州石化 3 万吨年干气脱硫制二甲基亚砜项目设备设计说明书(含塔设备计算说明、换热器设计结果、设备一览表).pdf
- 工程造价_横湖桥商业楼土建工程量清单报价.docx VIP
- 浙江师范大学行知学院 学生手册.pdf
- 2025年辽宁沈阳市文体旅产业发展集团有限公司招聘笔试参考题库附带答案详解.pdf
- 川崎病患儿的护理课件.pptx VIP
- 2024年东莞市东华高级中学自主招生数学试卷附答案解析 .pdf
- 中医馆客服知识培训课件.pptx
- 辽宁沈阳市文体旅产业发展有限公司招聘笔试题库2025.pdf
- 全国公开课大赛一等奖小学一年级下册数学人教版《七巧板》课件.pptx
- 辽宁沈阳市文体旅产业发展集团有限公司招聘笔试题库2025.pdf
文档评论(0)