欢迎来到天天文库
浏览记录
ID:43776812
大小:1.26 MB
页数:44页
时间:2019-10-14
《网络编程实用教程 叶树华 高志红 网络编程实用教程_第3章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章Windows环境的网络编程介绍了WindowsSockets规范,说明了WinSock规范与Berkeley套接口的区别,说明了Winsock1.1的库函数。3.1WindowsSockets规范3.1.1概述Microsoft公司以BerkeleySockets规范为范例,定义了WindowsSocktes规范,简称Winsock规范。这是Windows操作系统环境下的套接字网络应用程序编程接口(API)。图3.1网络应用进程利用Windock进行通信3.1.2WindowsSockets规范WindowsSockets规范是
2、一套开放的、支持多种协议的Windows下的网络编程接口。从1991年到1995年,从1.0版发展到2.0.8版,已成为Windows网络编程的事实上的标准。1.WindowsSockets1.1版本在Winsock.h包含文件中,定义了所有WinSock1.1版本库函数的语法、相关的符号常量和数据结构。库函数的实现在WINSOCK.DLL动态链接库文件中。(1)WinSock1.1全面继承了BerkeleySockets规范,见表3.1(2)数据库函数表3.2列出了Winsock规范定义的数据库查询例程。其中六个采用getXbyY()
3、的形式,大多要借助网络上的数据库来获得信息,(3)WinSock1.1扩充了BerkeleySockets规范针对微软Windows的特点,WinSock1.1定义了一批新的库函数,提供了对于消息驱动机制的支持,有效地利用Windows多任务多线程的机制。见表3.3(4)WinSock1.1只支持TCP/IP协议栈2.WinSock2.0WinSock2.0在源码和二进制代码方面与WinSock1.1兼容,WinSock2.0增强了许多功能。(1)支持多种协议(2)引入了重叠I/O的概念(3)使用事件对象异步通知(4)服务的质量(QOS
4、)(5)套接口组(6)扩展的字节顺序转换例程(7)分散/聚集方式I/O(8)新增了许多函数。3.WinSock1.1中的阻塞问题阻塞是在把应用程序从Berkeley套接口环境中移植到Windows环境中的一个主要焦点。阻塞是指唤起一个函数,该函数直到相关操作完成时才返回。在Berkeley套接口模型中,一个套接口的操作的缺省行为是阻塞方式的,除非程序员显式地请求该操作为非阻塞方式。在Windows环境下,我们强烈推荐程序员在尽可能的情况下使用非阻塞方式(异步方式)的操作。因为非阻塞方式的操作能够更好地在非占先的Windows环境下工作。
5、3.1.3WinSock规范与Berkeley套接口的区别1.套接口数据类型和该类型的错误返回值在UNIX中,包括套接口句柄在内的所有句柄,都是非负的短整数,在WinSock规范中定义了一个新的数据类型,称作SOCKET,用来代表套接字描述符。typedefu_intSOCKET;SOCKET可以取从0到INVALID_SOCKET-1之间的任意值。2.select()函数和FD_*宏在Winsock中,使用select()函数时,应用程序应坚持用FD_XXX宏来设置,初始化,清除和检查fd_set结构。3.错误代码的获得在UNIX套接
6、字规范中,如果函数执行时发生了错误,会把错误代码放到errno或h_errno变量中。在Winsock中,错误代码可以使用WSAGetLastError()调用得到。4.指针所有应用程序与WindowsSockets使用的指针都必须是FAR指针。5.重命名的函数(1)close()改变为closesocket()(2)ioctl()改变为ioctlsocket()6.Winsock支持的最大套接口数目在WINSOCK.H中缺省值是64,在编译时由常量FD_SETSIZE决定。7.头文件Berkeley头文件被包含在WINSOCK.H中。
7、一个WindowsSockets应用程序只需简单地包含WINSOCK.H就足够了。8.Winsock规范对于消息驱动机制的支持体现在异步选择机制、异步请求函数、阻塞处理方法、错误处理、启动和终止等方面。3.2Winsock1.1的库函数3.2.1Winsock的注册与注销1.初始化函数WSAStartup()Winsock应用程序要做的第一件事,就是必须首先调用WSAStartup()函数对Winsock进行初始化。初始化也称为注册。注册成功后,才能调用其他的WinsockAPI函数。(1)WSAStartup()函数的调用格式intW
8、SAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);(2)WSAStartup()函数的初始化过程图3.2说明了初始化的过程图3.2在一台计算机中,使用同
此文档下载收益归作者所有