socket编学习资料2.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
socket编学习资料2

第二节 无连接客户机/服务器应用程序 2.1数据结构及常用Socket调用函数 2.1.1 常用的数据结构 1、通用的地址结构 #include struct sockaddr u_short sa_family; /*地址类型:AF_XXX*/ char sa_data[14]; /*up to 14 bytes of address*/ sa_data包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一起的。 2、互联网域的专用地址结构 #include struct sockaddr_in short sin_family; /*AF_INET*/ u_short sin_port; /*16 位端口号*/ struct in_addr sin_addr; /*32位IP地址*/ char sin_zero[8]; /*unused*/ 其中 struct in_addr u_long s_addr; 注意: sin_zero是为了使两个结构在内存中具有相同的尺寸,使用时将其全部设为0值。(用bzero 或memset 函数) 两个指针是可以互通使用; 保证sin_port和sin_addr必须是网络字节顺序 3、主机地址结构 struct hostent char * h_name; /*主机的正式名称*/ char ** h_aliases; /*存储了主机的备用名称*/ char h_addrtype; /*返回地址类型,一般是AF_INET*/ int h_length; /*地址的字节长度*/ char ** h_addr_list; /*存储了主机的网络地址*/ #define h_addr h_addr_list[0] 2.1.2 基本转换函数 1、网络字节顺序与主机字节顺序 机器内部对变量字节存储顺序不同(高低位顺序不同,在Inte 286/386和DEC公司的VAX系统中的字节高位在后,而SPARC和IBM System/370则是高位在先),而网络传输的数据一定是要统一顺序的,所以对内部字节表示顺序和网络字节顺序不同的机器,一定要对数据进行转换。 2、转换函数 htons htonl ntohs ntotl sin_addr和sin_port从IP层和传输层获取,与网络有关,所以必须使用网络字节顺序。而sin_family只是用来判断类型,不会传输到网络上,所以可以使用主机字节顺序来存储。 3、IP地址转换 inet_addr “166.111.66.47” inet_ntoa “ina.sin_addr” 2.1.3 基本查询函数 getpeername getsockname gethostname gethostbyaddr getprotobyname 2.2 无连接客户机/服务器应用程序的基本模式 2.3 无连接客户机/服务器源程序中的基本socket调用 1、socket 建立一个通信链路的端点 int socket int domain, int type, int protocol 表2-1 参数family给出了socket所处的通信域 family值 通信域 支持协议 AF_UNIX UNIX域 UNIX通信协议 AF_INET 互联网域 TCP/IP AF_NS Xerox域 XNS 表2-2参数type给出socket类型 type值 类型 描述 SOCK_STREAM 流式 面向连接的通信,可进行可靠、顺序的数据传送 SOCK_DGRAM 数据报式 无连接通信,数据传送是不可靠,无序的 参数protocol指出了socket使用的协议。对UNIX域该参数大多数情况下皆为0;而对于其他的通信域,该参数值与type值相对应。SOCK_DGRAM对应IPPROTO_UDP;SOCK_STREAM对应IPPROTO_TCP。 2、bind 指定套接字使用的端口,将套接字与地址结构描述相连。 int bind int sockfd, struct sockaddr * my_addr, int addrlen 注意要将地址和端口使用网络字节顺序。端口为0时,会选定一个合适的端口。 3、read 与write 后者通常用于无连接通信中发送和接收数据。 count read sockfd, msg, length ; count write sockfd, msg, length ; 4、sendto 与recvfrom count sendto sockfd, msg, length, toaddr, addrlen ; count re

文档评论(0)

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

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

1亿VIP精品文档

相关文档