- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数课件
1Socket编程socket这个词可以表示很多概念:在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思,因此用来描述网络连接的一对一关系。TCP/IP协议最早在BSD UNIX上实现,为TCP/IP协议设计的应用层编程接口称为socketAPI。本章的主要内容是socket API,主要介绍TCP协议的函数接口,最后介绍UDP协议和UNIXDomain Socket的函数接口。图11.1:socketAPI2 网络字节序我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。例如上一节的UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。但是,如果发送主机是小端字节序的,这16位被解释成0xe803,而不是1000。因此,发送主机把1000填到发送缓冲区之前需要做字节序的转换。同样地,接收主机如果是小端字节序的,接到16位的源端口号也要做字节序的转换。如果主机是大端字节序的,发送和接收都不需要做转换。同理,32位的IP地址也要考虑网络字节序和主机字节序的问题。为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。3函数介绍A 依赖的头文件#include arpa/inet.hB 函数声明#include arpa/inet.huint32_thtonl(uint32_t hostlong);uint16_thtons(uint16_t hostshort);uint32_tntohl(uint32_t netlong);uint16_tntohs(uint16_t netshort);h表示host,n表示network,l表示32位长整数,s表示16位短整数。如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。uint32_thtonl(uint32_t hostlong);名称:htonl功能:The htonl() function converts the unsigned integer hostlong from hostbyte order to network byte order头文件:#include arpa/inet.h函数原形:uint32_t htonl(uint32_t hostlong);参数:?返回值:uint16_thtons(uint16_t hostshort);名称:htons功能:The htons() function converts the unsigned short integer hostshort fromhost byte order to network byte order.头文件:#include arpa/inet.h函数原形:uint16_t htons(uint16_t hostshort);参数:?返回值:uint32_tntohl(uint32_t netlong);名称:ntohl功能:The ntohl() function converts the unsigned integer netlong from networkbyte order to host byte order.头文件:#include arpa/inet.h函数原形:uint32_t ntohl(uint32_t netlong);参数:?返回值:uint16_tntohs(uint16_t netshort);名称:ntohs功能:The ntohs() function converts the unsigned short integer netshort fromnetwork byte
您可能关注的文档
- 1.7数码相机课件.ppt
- 2016年高二政治学业水平测试生活智慧与时代精神配套课件(新人教必修四)-副本详解.ppt
- 2016年高一物理课件:2.1《实验:探究小车速度随时间变化的规律》(新人教版必修一)详解.ppt
- 1.6教科版科学六年级上册《滑轮组》PPT课件.ppt
- 1.7涡流现象及其应用课件粤教版选修3-2课件.ppt
- 1.7 静电现象的应用课件.ppt
- 1.6自感日光灯课件(教科版选修3-2)课件.ppt
- 1.8无限深势阱课件.ppt
- 2016年高考全国1卷文数试题(解析版)详解.doc
- 1.7.静电现象的应用(公开课用)课件.ppt
- 2024年度党员干部民主生活会班子对照检查材料.docx
- 公司党委领导班子2024年度民主生活会对照检查材料4个带头方面.docx
- 市府办(政府办)领导班子2024年民主生活会会后综合情况报告.docx
- 在2025年市司法局信息宣传工作推进会上的讲话.docx
- 在2025年全省文化旅游高质量发展推进会上的讲话.docx
- 在2025年全区工业、住建大规模设备更新推进会上的讲话.docx
- 党支部2024年组织生活会民主评议党员情况总结报告_1.docx
- 2024年度组织生活会个人对照检查剖析材料.docx
- 镇党委书记2024年度民主生活会对照检查材料1.docx
- 党支部2024年组织生活会民主评议党员情况总结报告.docx
最近下载
- 小学二年级下册数学解决问题练习题.pdf VIP
- 2025年食品安全知识考试题库及答案.docx VIP
- 中职英语(高教版)基础模块一Unit6 Food and Drinks Listening and Speaking-优质教学课件PPT.pptx VIP
- 通过戏剧教育提升学生审美能力的研究教学研究课题报告.docx
- 年产运动鞋 400 万双项目环境影响报告表(2021年新版环评).pdf VIP
- 理光MPC3004 3504 4504 6004SP维修手册.pdf VIP
- 院感知识培训课件手卫生.pptx
- 居家用电安全知识ppt课件(完整内容).pptx VIP
- 2025年宜春职业技术学院单招职业适应性测试题库及一套完整答案.docx VIP
- 课题开题报告:新质生产力驱动下技能竞赛优化五育融合育人模式的实践研究.docx VIP
文档评论(0)