8.Linux网络编程.docVIP

  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文档。上传文档
查看更多
8.Linux网络编程

Linux网络编程 IP地址 IP地址的作用是标识计算机的网卡地址,每一台计算机都有一个IP地址。在程序中是通过IP地址来访问一台计算机的。 IP地址具有统一的格式。IP地址是32位长度的二进制数值,存储空间是4个字节。例如101010000000001是一台计算机的IP地址,但二进制的数值是不便于记忆的,可以把每个字节用一个十进制的整数来表示,既192.168.1.1。 所谓端口,是指计算机中为了标识同一计算机中不同程序访问网络而设置的编号。 域名 域名是用来代替IP地址来标识计算机的一种直观名称。套接字(socket)的本义是插座,在网络中用来描述计算机中不同程序与其他计算机程序的通信方式。人们常说的socket是一种特殊的IO接口,它也是一种文件描述符。Socket是一种常用的进程间通信机制,通过它不仅能实现本机上的进程间通信,而且通过网络能够在不同机器上的进程间进行通信。 流式socket(SOCK_STREAM) 流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。 数据报socket(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP。 原始socket 原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使用较为不便主要用于一些协议的开发 sockaddr 和 sockaddr_in struct sockaddr { unsigned short sa_family;/*地址族*/ char sa_data[14]; /*14 字节的协议地址,包含该 socket 的 IP 地址和端口号。*/ }; struct sockaddr_in { short int sa_family;/*地址族*/ unsigned short int sin_port; /*端口号*/ struct in_addr sin_addr; /*IP 地址*/ unsigned char sin_zero[8]; /*填充 0 以保持与 struct sockaddr 同样大小*/ };结构定义头文件 #include netinet/in.h a_family AF_INET:IPv4 协议 AF_INET6:IPv6 协议 AF_LOCAL:UNIX 域协议 AF_LINK:链路地址协议 AF_KEY:密钥套接字(socket) 通常用户在表达地址时采用的是点分十进制表示的数值(或者是以冒号分开的十进制IPv6地址),而在通常使用的socket编程中所使用的则是二进制值,这就需要将这两个数值进行转换。这里在IPv4中用到的函数有inet_aton、inet_addr和inet_ntoa,而IPv4和IPv6兼容的函数有inet_pton和inet_ntop。这里inet_pton函数是将点分十进制地址映射为二进制地址,而inet_ntop是将二进制地址映射为点分十进制地址 计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,因此在有些情况下,需要对这两个字节存储优先顺序进行相互转化。这里用到了四个函数:htons、ntohs、htonl、ntohl。这四个地址分别实现网络字节序和主机字节序的转化,这里的h代表host,n代表network,s代表short,l代表long。通常16位的IP端口号用s代表,而IP地址用l来代表。 流式socket i服务器 调用socket创建套接字,返回套接字文件描述符server_socket 填充套接字数据结构server_addr 调用bind绑定套接字server_socket与套接字数据结构server_addr 调用listen监听server_socket 进入死循环,在循环里调用accept接收客户端请求,成功则并返回客户 端的套接字client_socket与套接字数据结构client_addr 可以通过调用write和read对client_socket进行读写 ii客户端 调用socket创建套接字,返回套接字文件描述符server_socket b、填充将连接到的服务器套接字数据结构server_addr c、调用connect连接server_socket到server_addr d、若上一步成功,则可以对server_socket进行读写操作,此操作即对服 务器进行操作 说明 其实客户端的连接(c步)可以理解为套接字与套接字数据结构在客户 机上的绑定,参考程序见附录 面向报文soc

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档