购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3
Windows Sockets编程接口

2.3.1 Windows Sockets API

Windows Sockets API是Windows提供的基于套接字的网络应用程序开发的接口。它一方面继承了Berkeley UNIX套接字的基本函数定义,另一方面在Windows Sockets 1.1和Windows Sockets 2.0两个版本上进一步扩展了Windows Sockets特有的功能。表2-2列出了继承Berkeley UNIX套接字的基本函数的命名和功能。表2-3列出了Windows Sockets 1.1扩展的库函数的命名和功能。表2-4列出了Windows Sockets 2.0扩展的库函数的命名和功能。函数的使用细节将在之后的章节中深入介绍。

表2-2 Windows Sockets继承的Berkeley Socket API

表2-3 Windows Sockets 1.1扩展的API

表2-4 Windows Sockets 2.0扩展的API

(续)

2.3.2 Windows Sockets DLL的初始化和释放

Windows Sockets在继承Berkeley Socket的基础上进行了若干扩展,其中包括Windows Sockets DLL的初始化和释放。

1.Windows Sockets DLL的初始化

所有在Windows Sockets上开发的应用程序(包括动态链接库)在使用任何Windows Sockets API调用之前,必须对Windows Sockets DLL的使用进行初始化,以确认在该操作系统上是否支持将要使用的Windows Sockets版本,以及分配必要的资源。

(1)WSAStartup()函数

初始化Windows Sockets DLL需要使用函数WSAStartup()。该函数是网络程序中最先使用的套接字函数,其他套接字函数则要在成功调用WSAStartup()后才能正常工作。

WSAStartup()函数的定义为:

其中的参数说明如下:

· wVersionRequested[in]:Windows Sockets API提供的调用方可使用的最高版本号。高位字节指明副版本(修正)号,低位字节指明主版本号。

· lpWSAData[out]:指向WSADATA数据结构的指针,用来接收Windows Sockets实现的细节。

如果函数调用成功,则返回0;否则,返回错误码。

(2)Windows Sockets DLL初始化的具体操作

使用WSAStartup()对Windows Sockets DLL进行初始化的具体步骤为:

1)创建类型为WSADATA的对象。

2)调用函数WSAStartup(),并根据返回值判断错误信息。

2.Windows Sockets DLL的释放

当应用程序完成了Windows Sockets的使用后,应用程序或DLL必须调用WSACleanup()将其从Windows Sockets的实现中注销,并且该实现释放为应用程序或DLL分配的任何资源。

每一次WSAStartup()调用,必须有一个与之对应的WSACleanup()调用。只有最后的WSACleanup()做实际的清除工作,前面的调用仅仅将Windows Sockets DLL中的内置引用计数递减。为确保WSACleanup()调用了足够的次数,应用程序也可以在一个循环中不断调用WSACleanup(),直至返回WSANOTINITIALISED错误作为调用结束的条件。

(1)WSACleanup()函数

该函数没有参数,如果函数调用成功,则返回0;否则,返回错误码。

(2)Windows Sockets DLL释放的具体操作

使用WSACleanup()对Windows Sockets DLL进行释放的步骤如下: wM0R6gA1/qWCrGN9L/5Cb8DtpAExHNNAixY2afyyXPzuqrBpFDEeuGKerP6miU3H

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开