欢迎来到天天文库
浏览记录
ID:39297272
大小:428.81 KB
页数:100页
时间:2019-06-29
《标准TCPIP编程接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第17章标准TCP/IP编程接口—Socket第17章标准TCP/IP编程接口—Socket17.1套接口概述17.2地址与地址操作函数17.2.1INET协议族地址结构—sockaddr_in17.2.2IPv4地址结构—in_addr17.2.3通用地址结构—sockaddr17.2.4地址操作函数17.3端口17.4字节序问题17.5三种套接口类型和两种I/O模式17.5.1套接口的类型17.5.2I/O模式第17章标准TCP/IP编程接口—Socket17.6基本套接口函数17.7简单的客户端程序17.6.1WSA
2、Startup17.7.1UDP客户端17.6.2socket17.7.2TCP客户端17.6.3bind17.6.4listen.17.6.5accept17.6.6conect17.6.7recv和send17.6.8recvfrom和sendto17.6.9closesocket17.6.10WSACleanup17.1套接口概述Berkeleysockets接口在windows平台上的移植版本称为Winsock。最初的伯克利套接口API在windows平台上的移植版本是Winsock1.1,在它的基础上,微软
3、又进一步提供了Winsock2.0从用户的角度来看,套接口是网络通信端点的一种抽象概念,为用户提供一种发送和接收数据的机制。是一种进程间通信的机制,适用于分布式环境。17.2.1INET协议地址结构—sockaddr_instructsockaddr_in{Shortsin_family;U_shortsin_port;Structin_addrsin_addr;Charsin_zero[8];};地址族,一般填AF_INET16位IP端口32位IP地址8个字节的0填充,给结构体初始化清0的函数如下Void*memset(v
4、oid*dest,intc,size_tcount);所以是TCP/IP17.2.2IPv4地址结构—in_addrstructin_addr{Union{struct{u_chars_b1,s_b2,s_b3,s_b4;}s_un_b;struct{u_shorts_w1,s_w2;}s_un_w;u_longs_addr;}s_un;#define…………};如多网卡,又不关心接口(INADDR_ANY的使用,P184)202.119.9.199赋值时的不同分段(4、2、1)INET协议地址结构中的IP地址部分17.2.
5、3通用地址结构—sockaddrstructsockaddr{u_shortsa_family;charsa_data[14];};一种是只为TCP/IP,另外是为了提供通用接口以服务多种网络协议开发的通用结构,但要提供足够的信息说明自己的协议,复杂!例如:Intconnetct(sockets,conststructsockaddrFAR*name,intnamelen)对于程序员来说,很少直接使用这种通用地址结构。连接时不是structsockadr_in*而是通用地址结构17.2.4地址操作函数3个常用的地址操作函数:
6、将点分格式的IPv4地址字符串转化为in_addr地址结构适用的32位整数:unsignedlonginet_addr(constcharFAR*cp);将in_addr地址值转化为标准的点分IP地址字符串:charFAR*inet_ntoa(structin_addrin);域名解析功能:structhostentFAR*gethostbyname(constcharFAR*name);注意:在使用winsock函数之前,应用程序必须首先调用WSAStartup函数初始化ws2_32.dll,而在应用结束后必须调用WSAC
7、leanup函数关闭。Hostent结构structhostent{charFAR*h_name;/*officialnameofhost*/charFAR*FAR*h_aliases;/*aliaslist*/shorth_addrtype;/*hostaddresstype*/shorth_length;/*lengthofaddress*/charFAR*FAR*h_addr_list;/*listofaddresses*/#defineh_addrh_addr_list[0]/*address,forbackward
8、compat*/};17.3端口0:不使用1~1023:知名端口1024~5000:可以被任意客户端程序使用5001~65535:为其他服务器程序预留17.4字节序问题字节顺序转换htons()—"HosttoNetworkShort“(16bit)htonl()—"HosttoNetwo
此文档下载收益归作者所有