欢迎来到天天文库
浏览记录
ID:40229994
大小:1.06 MB
页数:36页
时间:2019-07-27
《02 Winsock编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网络游戏编程二Winsock编程为什么使用TCP/IPTCP/IP软件可以在不同厂商提供的机器环境中运行。这是因为TCP/IP协议软件平台是独立的,不依赖于任何厂商的内部数据表示方法,也不使用仅仅被部分计算机系统所支持的特性。TCP/IP软件可以为TCP信息段从源到目的地之间的传输提供可靠保障。TCP/IP标准不指定应用软件与TCP/IP协议软件之间的接口,该标准仅仅对所需功能提出建议。这样做的优点是保证了在不同操作系统中使用TCP/IP协议软件的灵活性与兼容性为什么使用TCP/IPAPI对编程人员来说,利用TCP/IP协议软件编程过于底层,因为它要求编程人
2、员了解TCP信息段的所有区段,这样的编程过程过于繁重。所以,最好有一套友好的API,可以供编程人员直接调用,以此实现相关功能。目前,被广泛使用的TCP/IP的API主要有:伯克利UNIX套接字接口发布版(BerkeleyUNIXsocketinterfacedistribution(BSD)SystemVUNIX传输层接口(TransportLayerInterface,TLI)Windows套接字接口(WinSock)套接字(Socket)网络中的通信接口被称为“套接字”。套接字的行为类似一个通信端点(endpoint)。TCP/IP的套接字接口首先在Be
3、rkeley的UNIX机中实现,随后被引入到其它平台。在Windows中,套接字接口被称为WindowsSocket,或WinSock,或WindowsSocketAPI。TCP/IP网络通信接口,类似“插座(socket)”WinsockWinSock提供了一个函数库,这些函数根据重要性被分为两类:重要的套接字函数:例如socket(),bind(),accept(),connect()等。其它辅助函数:例如getserverbyname(),htons()等WinSock执行与TCP/IP协议软件的交互功能WinSock与协议WinSock是一个接口,而
4、不是协议本身。WinSock支持TCP/IP,NetBIOS,IPX/SPX,AppleTalk等网络协议某些不同协议族接口间通信相同协议族接口间通信(在很多情况下,服务器端和客户端使用不同的协议族,即使使用相同的API,也无法通信。)套接字分类套接字主要分为三类:流套接字(streamsocket):被TCP协议用于实现面向连接的通信,所以也被称为TCP套接字。数据包套接字(datagramsocket):被UDP协议用于实现无连接的通信,所以也被称为UDP套接字。原始套接字(rawsocket):直接使用IP协议,被用于使用ICMP和OSPF的应用程序。
5、在网络游戏程序的编写过程中,不需要使用。套接字描述符每一个套接字都被标识为一个无符号整数,这个整数被称为套接字描述符。一个进程可以为多个并发通信对话打开多个套接字(例如一个web服务器可以同时为多个浏览器服务时)。Windows为每一个进程保留一个套接字描述符表。进程中的每一个套接字都与一个指针相关联,该指针指向了进程套接字描述符表中的一个数据结构。该数据结构保存了socket会话的相关信息,包括了很多域,当应用程序调用一些WinSock函数时,将填写这些域。字节顺序不同的计算机可能使用不同的方法表示16位或32位的整数。整数在这些机器中的保存顺序被称为主机
6、字节顺序(hostbyteorder)。Intel80x86中表示整数0x060E170A(小端法)Motorola68000中表示整数0x060E170A(大端法)字节顺序TCP/IP指定大端法字节顺序为网络字节顺序(networkbyteorder)。一些WinSock函数的参数必须使用网络字节顺序。所以WinSock提供了一些转换函数,用于在主机字节顺序和网络字节顺序间进行转换:u_shorthtons(u_shorthost_short):u_shortntohs(u_shortnetwork_short):u_longhtonl(u_longhos
7、t_long):u_longntohl(u_longnetwork_long):端点地址通用端点地址:Socket具备协议族无关性,可以兼容多种协议族,并定义了如下通用端点地址:structsockaddr{u_shortsa_family;//地址家族charsa_data[14];//占位空字符};TCP/IP协议中的端点地址:structsockaddr_in{u_shortsin_family;//地址家族u_shortsin_port;//端口号structin_addrsin_addr;//IP地址charsin_zero[8];//占位空符};
8、端点地址可见,TCP/IP的端点地址由三部分组成:T
此文档下载收益归作者所有