欢迎来到天天文库
浏览记录
ID:51992405
大小:1.36 MB
页数:94页
时间:2020-03-27
《《Winsock编程接口》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章Winsock编程接口Windows套接字简介字节顺序和Winsock的寻址方式WinsockAPI基本函数数据报套接字编程流式套接字编程1.Windows套接字简介Winsock来源Sockets本来是Unix操作系统上流行的一种网络编程接口(API)。API:ApplicationProgrammingInterface发展过程:1983年在Berkeley大学4.2BSDUNIX中首先使用,因此被称为BerkeleySocketAPI(只支持TCP/IP协议)。后来在4.3BSDUNIX中增加了对OSI网络
2、协议的支持。应用平台:UNIX、LINUX产生Winsock:WinsockAPI在1991年根据4.3BSDUNIX的BerkeleySocket制定的。Winsock规范Winsock规范:一套开放的、支持多种协议的Windows下的网络编程接口。主要支持TCP/IP协议。Winsock规范主要包括Windows提供的API函数:符合BerkeleySocket风格的库函数;针对Windows的一组扩展库函数。发展过程:1991年的1.0版到1997年的2.2版(主要扩充了对其它协议的支持)。应用平台:Windo
3、ws系列Winsock实现库两个版本:Winsock1和Winsock2。现在大都使用Winsock2,Winsock2库的最新版本是2.2。Winsock实现库采用Winsock1的应用必须包含winsock.h头文件。使用Winsock2的应用必须包含winsock2.h头文件。不同平台对应不同的库版本。套接字基本概念套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。在编写网络应用程序时,应先申请套接字,以后两台机器上的程序通过该套接字进行通信。在网络程序编程中,通过将IP、端口与一个套接字绑
4、定,并指明通信协议,从而来实现应用程序与TCP/IP协议的交互。套接字通信模型套接字套接字协议驱动程序网络接口卡(NIC)客户端服务器基于TCP/IP的网络调用数据发送函数把信息写入套接字调用数据接收函数把数据从套接字读出中间环节套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。如下图:套接字中的信息通过驱动程序送入网卡,然后经网络发送到远端服务器网卡将接收到的信息通过驱动程序送入套接字进程C进程S套接字(Socket)分类流式套接字(SOCK_STREAM)数据报套接字(SOCK_DGRAM)原始
5、套接字(SOCK_RAW)打电话在TCP/IP协议组中,使用TCP协议来实现流式套接字。发信在TCP/IP协议组中,使用UDP协议来实现数据报套接字。该套接字允许对底层协议(如IP或ICMP)进行直接访问,常用来测试新安装的网络设备,以及对流经网卡的数据进行捕获分析。它定义了一种无连接、不可靠的双向数据传输服务。它定义了一种可靠的、面向连接的双向数据传输服务。2.字节顺序和Winsock的寻址方式字节顺序含义:占内存多于一个字节类型的数据在内存中的存储顺序。通常有如下两种存储顺序:1.Littleendian:将低序字
6、节存储在起始地址(低序优先)2.Bigendian:将高序字节存储在起始地址(高序优先)低序高序如一个32位的长整型数0x12345678跨越4个字节(每字节8位)内存地址1000100110021003低序优先存储顺序:0x780x560x340x12高序优先存储顺序:0x120x340x560x78然而处于主机上的数据却因不同的CPU上运行的操作系统的不同,字节顺序也不同,参见下表。通常根据所处的位置不同,低序优先字节顺序和高序优先字节顺序我们又分别称为主机字节顺序和网络字节顺序。处理器操作系统字节排序HP-PAN
7、T低序优先HP-PAUNIX高序优先Intelx86全部低序优先Motorola680x()全部高序优先因此,我们常说的主机字节顺序,就是低序优先,但主机上的字节顺序却不尽都是低序优先。网络字节顺序是TCP/IP中规定的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。不同字节顺序转换函数主机字节顺序h—host;网络字节顺序n—networku_shorthtons(u_shorthostshort);把一个u_short型的主机字节顺序存储的数转换为网络字节
8、顺序存储.2字节数转换u_longhtonl(u_longhostlong);把一个u_long型的主机字节顺序存储的数转换为网络字节顺序存储.4字节数转换u_shortntohs(u_shortnetshort);把一个u_short型的网络字节顺序存储的数转换为主机字节顺序存储.2字节数转换u_longntohl(u_long
此文档下载收益归作者所有