- 1、本文档共100页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第17章 标准TCP/IP编程接口— Socket 第17章 标准TCP/IP编程接口— Socket 17.1 套接口概述17.2 地址与地址操作函数 17.2.1 INET协议族地址结构—sockaddr_in 17.2.2 IPv4地址结构—in_addr 17.2.3 通用地址结构—sockaddr 17.2.4 地址操作函数17.3 端口17.4 字节序问题17.5 三种套接口类型和两种I/O模式 17.5.1 套接口的类型 17.5.2 I/O模式 第17章 标准TCP/IP编程接口—Socket 17.6 基本套接口函数 17.7 简单的客户端程序 17.6.1 WSAStartup 17.7.1 UDP客户端 17.6.2 socket 17.7.2 TCP客户端 17.6.3 bind 17.6.4 listen. 17.6.5 accept 17.6.6 conect 17.6.7 recv和send 17.6.8 recvfrom和sendto 17.6.9 closesocket 17.6.10 WSACleanup 17.1 套接口概述 Berkeley sockets 接口在windows平台上的移植版本称为Winsock。 最初的伯克利套接口API在windows平台上的移植版本是Winsock1.1,在它的基础上,微软又进一步提供了Winsock2.0 从用户的角度来看,套接口是网络通信端点的一种抽象概念,为用户提供一种发送和接收数据的机制。 是一种进程间通信的机制,适用于分布式环境。 17.2.1 INET协议地址结构—sockaddr_in struct sockaddr_in { Short sin_family; U_short sin_port; Struct in_addr sin_addr; Char sin_zero[8]; }; 17.2.2 IPv4地址结构—in_addr struct in_addr { Union { struct{u_char s_b1, s_b2, s_b3, s_b4;}s_un_b; struct{u_short s_w1, s_w2;} s_un_w; u_long s_addr; }s_un; #define … … …… }; 如多网卡,又不关心接口(INADDR_ANY的使用,P184) 17.2.3 通用地址结构—sockaddr struct sockaddr { u_short sa_family; char sa_data[14]; }; 一种是只为TCP/IP,另外是为了提供通用接口以服务多种网络协议开发的通用结构,但要提供足够的信息说明自己的协议,复杂!例如: Int connetct(socket s,const struct sockaddr FAR *name,int namelen) 对于程序员来说,很少直接使用这种通用地址结构。 17.2.4 地址操作函数 3个常用的地址操作函数: 将点分格式的IPv4地址字符串转化为in_addr地址结构适用的32位整数:unsigned long inet_addr(const char FAR *cp); 将in_addr地址值转化为标准的点分IP地址字符串: char FAR *inet_ntoa(struct in_addr in); 域名解析功能: struct hostent FAR *gethostbyname(const char FAR *name); 注意:在使用winsock函数之前,应用程序必须首先调用WSAStartup函数初始化ws2_32.dll,而在应用结束后必须调用WSACleanup函数关闭。 Hostent结构 struct hostent { char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias list */ short h_addrtype; /* host address type */ short h_length; /* length of addre
文档评论(0)