文档介绍:第3章 Windows环境的网络编程
介绍了Windows Sockets 规范,
说明了WinSock 规范与Berkeley套接口的区别,
说明了Winsock 的库函数。
Windows Sockets规范
概述
Microsoft公司以Berkeley Sockets规范为范例,定义了Windows Socktes规范,简称Winsock规范。这是Windows操作系统环境下的套接字网络应用程序编程接口(API)。
网络应用进程利用Windock进行通信
Windows Sockets规范
Windows Sockets 规范是一套开放的、支持多种协议的Windows下的网络编程接口。从1991年到1995年,,已成为Windows网络编程的事实上的标准。
Sockets
,定义了所有WinSock 、相关的符号常量和数据结构。。
(1)WinSock 全面继承了Berkeley Sockets规范,见表
(2)数据库函数
。其中六个采用getXbyY()的形式,大多要借助网络上的数据库来获得信息,
(3)WinSock 扩充了Berkeley Sockets规范
针对微软 Windows的特点,WinSock ,提供了对于消息驱动机制的支持,有效地利用Windows多任务多线程的机制。
(4)WinSock
WinSock ,
WinSock 。
(1)支持多种协议
(2)引入了重叠I/O的概念
(3)使用事件对象异步通知
(4)服务的质量(QOS)
(5)套接口组
(6)扩展的字节顺序转换例程
(7)分散/聚集方式I/O
(8)新增了许多函数。
阻塞是在把应用程序从Berkeley套接口环境中移植到Windows环境中的一个主要焦点。阻塞是指唤起一个函数,该函数直到相关操作完成时才返回。
在Berkeley套接口模型中,一个套接口的操作的缺省行为是阻塞方式的,除非程序员显式地请求该操作为非阻塞方式。
在Windows环境下,我们强烈推荐程序员在尽可能的情况下使用非阻塞方式(异步方式)的操作。因为非阻塞方式的操作能够更好地在非占先的Windows环境下工作。
WinSock规范与Berkeley套接口的区别
在UNIX中,包括套接口句柄在内的所有句柄,都是非负的短整数,
在WinSock规范中定义了一个新的数据类型,称作SOCKET,用来代表套接字描述符。
typedef u_int SOCKET;
SOCKET可以取从0到INVALID_SOCKET-1之间的任意值。
()函数和FD_*宏
在Winsock中,使用select()函数时,应用程序应坚持用FD_XXX宏来设置,初始化,清除和检查fd_set结构。
在UNIX 套接字规范中,如果函数执行时发生了错误,会把错误代码放到errno或h_errno变量中。
在Winsock中,错误代码可以使用WSAGetLastError()调用得到。
所有应用程序与Windows Sockets使用的指针都必须是FAR指针。
(1)close()改变为closesocket()
(2)ioctl()改变为ioctlsocket()
,在编译时由常量FD_SETSIZE决定。
。一个Windows 。
体现在异步选择机制、异步请求函数、阻塞处理方法、错误处理、启动和终止等方面。
Winsock
Winsock的注册与注销
()
Winsock 应用程序要做的第一件事,就是必须首先调用WSAStartup()函数对Winsock进行初始化。初始化也称为注册。注册成功后,才能调用其他的Winsock A