欢迎来到天天文库
浏览记录
ID:37713847
大小:152.00 KB
页数:6页
时间:2019-05-29
《WindowsSocket基本概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、曹老师课件tcpip-3.ppt第四帧开始WindowsSocket基本概念二、SOCKET基本概念(套接口)用户目前可以使用三种套接口,即流套接口、数据报套接口和原始套接口。首先我们看看在Windows系统中三种类型套接口是怎样定义的:#defineSOCK_STREAM1 #defineSOCK_DGRAM2#defineSOCK_RAW3流套接口提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠,有序,无重复的。就是说,一个从数据报套接口接收信息的进程有可能发现信息重
2、复了,或者和发出时的顺序不同。数据报套接口的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。由于数据报套接字是无联接的,例如广播时的联接,所以并不保证接收端是否正在侦听。原始套接口保存了数据包中的完整IP头,前面两种套接字只能收到用户数据。因此可以通过原始套接字对数据进行分析。如果系统需要对IP数据报进行分析,就需要采用这种方式三、字节顺序问题(WindowsSocket书上Page25)在不同的计算机系统中,可能采用不同的字节序列存储数据。一种称为Littl
3、e-Endian,此种在Intel体系结构中采用。另一种称为Big-Endian,此种在Macintosh体系结构中采用。在计算机中把IP地址和端口号指定为多字节数字时,这个数就按照“主机字节(host-byte)”顺序表示,也就是little-endian顺序但是在网络上指定IP地址和端口号,这个数必须按照“big-endian”形式来表示,也就是“网络字节(network-byte)”。htonl()函数和htons()函数实现从主机字节顺序转换为网络字节顺序的功能,其中“h”代表主机,“to”代表转换,“n”代表“ne
4、t”,“l”代表“long”,“s”代表“short”。ntohl()函数和ntohs()函数实现从网络字节顺序转换为主机字节顺序的功能。四、错误处理(曹老师课件tcpip-3.ppt第九帧)在UNIX中所有句柄包括套接口句柄,都是非负的短整数。WindowsSockets句柄则没有这一限制,除了INVALID_SOCKET不是一个有效的套接口外,套接口可以取从0到INVALID_SOCKET-1之间的任意值。所以检查在socket()和accept()函数返回值时,检查是否有错误发生就不应该使用把返回值和-1比较的方法,或
5、判断返回值是否为负。取而代之的是,一个应用程序应该使用常量INVALID_SOCKET,该常量已在WINSOCK.H中定义。常量SOCKET_ERROR是被用来检查WindowsAPI调用失败的。虽然对这一常量的使用并不是强制性的,错误代码可以使用WSAGetLastError()调用得到。但是要注意:使用Windows宏和定义的常量时,必须在对SOCK初始化之后WSAStartup()才可以使用。七、地址和地址操作函数(曹老师课件tcpip-3.ppt第十七帧书上Page55)在Socket编程过程中,经常会碰到3种类型的
6、套接字地址结构。这分别是INET协议簇地址结构,IPV4地址结构和通用地址结构。1、INET协议簇地址结构sockaddr_in结构structsockaddr_in{shortsin_family;u_shortsin_port;structin_addrsin_addr;charsin_zero[8];};sin_family为网络地址类型,必须设定为AF_INET,以告知WindowsSockets应用程序使用IP地址家族sin_port为服务端口,注意不要使用已固定的服务端口,如HTTP的端口80等。如果端口设置为0
7、,则系统会自动分配一个唯一端口。sin_addr为一个unsignedlong的IP地址。sin_zero为填充字段,纯粹用来保证结构的大小,使之与SOCKADDR结构大小相同。2、IPV4地址结构----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;#defines_addrS_un.S_addr3、通用地址结构Sockaddr地址结
8、构:structsockaddr{u_shortsa_family;/*addressfamily*/charsa_data[14];/*upto14bytesofdirectaddress*/};八、套接字的使用步骤(曹老师课件tcpip-3.ppt第二十二帧书上Page26)1、启动W
此文档下载收益归作者所有