- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- PVC模型制作验报告.doc
- Q-0018D决问题步骤讲义.doc
- QC7004微物检验方法学验证管理规程.doc
- QEP010采控制程序1.doc
- QJZ系列使用明书.doc
- Qnqgsb理和实践,怎样过英语四级.doc
- QP06基础设管理程序.doc
- Qrasbk新方梅晗版雅思阅读讲义.doc
- QP01400 行业信息管理程序.doc
- Qrppge新方日语网络教程讲义4.doc
- 2023年度安全员考试题库检测试题打印附答案详解(达标题).docx
- 2023年度安全员考试题库检测试题打印(实用)附答案详解.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【名师系列】.docx
- 2023年度安全员考试题库检测试题打印及答案详解【考点梳理】.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【各地真题】.docx
- 2023年度安全员考试题库检测试题打印附参考答案详解【完整版】.docx
- 2023年度安全员考试高分题库含答案详解(精练).docx
- 2023年度安全员考试高分题库及参考答案详解【能力提升】.docx
- 2023年度安全员考试高分题库附答案详解【典型题】.docx
- 2023年度安全员考试高分题库及参考答案详解(培优B卷).docx
文档评论(0)