网站大量收购独家精品文档,联系QQ:2885784924

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数课件.docx

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数课件.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档