《第二部分基本套接口编程-linux网络编程》-公开·课件.pptVIP

《第二部分基本套接口编程-linux网络编程》-公开·课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本套接字编程 主要内容 套接字基础 套接字地址结构 套接字基本函数 简单TCP套接字编程 简单套接字编程 套接字基础 网络编程接口有两个发展方向:Socket,TLI Socket原意是“插座”。区分不同应用程序间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 套接字是一种网络API,程序员可以用之开发网络程序。套接字接口本意在于提供一种进程间通信的方法,使得在相同或不同的主机上的进程能以相同的规范进行双向信息传送。 套接字(套接口) 套接字(套接口) 套接口还可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。 其本质是通信过程中所要使用的一些缓冲区及其一些相关的数据结构。 套接字类型 套接字存在于特定的通信协议(地址族)中,只有类属于同一地址族的套接字才能建立通信,套接字支持多种通信协议: AF_LOCAL:Unix域协议 AF_INET:IP版本4 AF_INET6:IP版本6 Linux支持多种套接字类型,套接字类型:是指创建套接字的应用程序所希望的通信服务类型。 SOCKET_STREAM:双向可靠数据流,流式套接字,对应TCP SOCKET_DGRAM:双向不可靠数据报,数据包套接字,对应UDP SOCKET_RAW:是低于传输层的低级协议或物理网络直接访问,可以访问内部网络接口。原始套接字,例如接收和发送ICMP报。 套接字地址结构(IPv4) 大多数套接字函数需要一个指向套接字地址结构的参数,每个协议族都定义它自己的套接字地址结构,一般以”sockaddr_”开头,并以协议簇为后缀。(netinet/in.h) struct sockaddr_in{ unsigned short int sin_len; /* IPv4地址长度 */ short int sin_family; /* 地址类型 */ unsigned short int sin_port; /* 存储端口号 */ struct in_addr sin_addr; /*存储IP地址 */ unsigned char sin_zero[8]; /* 空字节 */ }; 在编程中大多数是使用sockaddr_in这个结构来设置/获取地址信息。 struct sockaddr_in server …… bzero(server,sizeof(server))//置0 server.sin_family=AF_INET; server.sin_port=htons(PORT); server.sin_addr.s_addr = htonl(INADDR_ANY) ……. 套接字地址结构(IPv6) IPv6地址为128位。(netinet/in.h) IPv4与IPv6地址结构比较 套接口地址结构仅在给定主机上使用,虽然有些成员用在不同主机间通信,但结构本身并不参与通信。 通用套接字地址结构 由于套接字函数需接收来自不同协议的地址结构,ANSI的办法是使用通用的指针类型,即(void *).套接字函数方法是定义一个通用的套接字地址结构。sys/socket.h 字节排序函数 网络中存在多种类型的机器,这些不同类型的机器表示数据的字节顺序是不同的。 以16进制数308A,在内存地址0x1000的存储为例 字节排序函数(cont.) 系统提供4个函数来进行字节顺序转换: #include “netinet/in.h” unsigned short int htons(unsigned short int hostshort); unsigned long int htonl(unsigned long int hostlong); unsigned short int ntons(unsigned short int netshort); unsigned long int ntonl(unsigned long int netlong); h:主机 n:网络 s:短整数 l:长整数 其中。前两个函数将主机字节顺序转换成网络字节顺序;后两个函数将网络字节顺序转换成主机字节顺序。 在使用这些函数时,我们不关心主机或网络顺序的真实值到底是大端还是小端,只需要调用适当的函数来对给定值(函数的整型参数)进行主机字节顺序和网络字节顺序的转换,它们的返回值就是经过转换以后的结果。 字节操纵函数 系统提供两组函数来处理多字节数

文档评论(0)

老刘忙 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档