LINUX C编程网络编程[宣讲].pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络协议中一些术语 面向连接(Connection-oriented)的协议有两个端点,在通 信之前必须建立连接。 协议提供了顺序性(sequencing),保证数据按照发送的顺序 到达目的地。 协议提供了错误控制(error control),可以自动丢弃损坏的 消息,然后安排重新发送数据。 流(stream)协议仅仅识别字节边界,也就是说一个字节的 序列可以被分割成片,然后发送出去,但是接收到的数据 仍然是原数据。 基于包(Packet-based)协议处理数据包,保持包边界向接 收者发送整个包。 UDP(数据报协议datagram)协议是基于包协议,TCP协议是基于流协议 的,不仅提供顺序性,而且提供了错误控制。 * 精品ppt·实用可编辑 Linux中的TCP/IP网络结构 用户进程 套接字接口 网络协议 网络设备 是进程与网络协议之间的接口中。在Linux中socket属于文件系统的一部分,网络通信可以看成对文件的读取。 在一个通信连接中的两端通信程序各自有一个套接字来描述自己那一端。 * 精品ppt·实用可编辑 Socket 编程 套接字与文件描述字 相同点: 像文件描述字一样,套接字也使用read,write来读写数据。 不同点: 套接字除了有一个地址以外,还包含3个属性—域、类型和协议。 * 精品ppt·实用可编辑 Socket编程相关的数据结构1 Struct sockaddr:保存着套接字的地址信息 Struct sockaddr{ Unsigned short sa_family;//地址族 Char sa_data[14];//套接字实际的地址数据(目的地址及端口)? } 每种协议都有自己的网络地址的定义,套接字API必须对这些不 同的地址定义进行抽象。 * 精品ppt·实用可编辑 Socket 编程 Socket编程相关的数据结构1 协议和地址族 业余无线电使用NetRom PF_NETROM AF_NETROM AppleTalk DDS PF_APPLETALK AF_APPLETAlK Novell的IPX PF_IPX AF_IPX 业余无线电使用AX.25 PF_AX25 AF_AX25 TCP/IP(ipv6)? PF_INET6 AF_INET6 TCP/IP(ipv4)? PF_INET AF_INET Unix域 PF_UNIX AF_UNIX 协议描述 协议 地址 * 精品ppt·实用可编辑 Internet通信域套接字地址结构sockaddr_in struct sockaddr_in { short int sin_family; //地址族 unsigned short int sin_port; //端口号 struct in_addr sin_addr; //IP地址 char sin_zero[8]; //填充0以保持与struct sockaddr同样大小,这样一个指向sockaddr_in数据结构的指针可以强行转换为一个指向数据结构sockaddr的指针。 } //端口号以及 Internet 地址使用的是网络字节顺序,需要通过特殊函数进行转换 Socket 编程 Socket编程相关的数据结构2 * 精品ppt·实用可编辑 Socket 编程 网络字节顺序 TCP/IP网络通常是异构的,它包含大量不同种类的计算机及体系结构。在体系结构上最大的区别就是存储数据的方式。 常见的方式有两种,大尾端(把最高位的字节存放在最低的硬件地址上)和小尾端(反之)。 TCP/IP协议使用大尾端,而所有的intel和intel兼容的处理器都采用小尾端字节存储顺序。因此在网络上传输多字节数据的顺序被称为网络字节顺序。 几个字节顺序转换函数: Htons:”Host To Network Short”,主机地址-网络字节顺序 Htonl:” Host To Network Long”,主机地址-网络字节顺序(长型),此长型非C语言中的long,详见函数原型。 ntohs:” Network To Host Short”,网络字节顺序-主机地址 ntohl:” Network To Host long”,网络字节顺序-主机地址(长型)? * 精品ppt·实用可编辑 获取服务器和客户端主机信息 #include netdb.h Struct hostent * gethostbyname(const char * hostname);//将机器名()转换为一个hostent的结构指针,在这个结构里 保存域名的地址信息。 Struct hostent * gethostbyaddr(const char * addr,int len,int type); 将一个32位的IP地址(

文档评论(0)

飞翔的燕子 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档