📄 3-2.htm
字号:
<html>
<head>
<title>3-2</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<table width="100%" border="0">
<tr>
<td height="31">
<div align="center"><b><font color="#000099">3.2 Windows Sockets编程原理</font></b></div>
</td>
</tr>
<tr>
<td height="31">由于Windows的基于消息的特点,WINSOCK和BSD套接口相比,有如下一些新的扩充:</td>
</tr>
<tr>
<td height="28">1.异步选择机制</td>
</tr>
<tr>
<td height="67">异步选择函数WSAAsyncSelect()允许应用程序提名一个或多个感兴趣的网络事件,如FD_READ,FD_WRITE,FD_CONNECT,FD_ACCEPT等等代表的网络事件.当被提名的网络事件发生时,Windows应用程序的窗口函数将收到一个消息.这样就可以实现事件驱动了.</td>
</tr>
<tr>
<td height="32">2.异步请求函数</td>
</tr>
<tr>
<td height="41">异步请求函数允许应用程序用异步方式获得请求的信息,如WSAAsyncGetXByY()类函数. 这些函数是对BSD标准函数的扩充.函数WSACancelAsyncRequest()允许用户中止一个正在执行的异步请求.</td>
</tr>
<tr>
<td height="33">3.阻塞处理方法</td>
</tr>
<tr>
<td height="64">WINSOCK提供了"钩子函数"负责处理Windows消息,使Windows的消息循环能够继续.WINSOCK提供了两个函数(WSASetBlockingHook()和WSAUnhookBlockingHook())让应用程序设置或取消自己的"钩子函数".函数WSAIsBlocking()可以检测是否阻塞,函数WSACancelBlockingCall()可以取消一个阻塞的调用.</td>
</tr>
<tr>
<td height="28">4.错误处理</td>
</tr>
<tr>
<td height="28">WINSOCK提供了两个WSAGetLastError()和WSASetLastError()来获取和设置最近错误号</td>
</tr>
<tr>
<td height="30">5.启动和终止</td>
</tr>
<tr>
<td height="62">由于Windows Sockets的服务是以动态连接库WINSOCK.DLL形式实现的,所以必须要先调用WSAStartup()函数对Windows
Sockets DLL进行初始化,协商WINSOCK的版本支持,并分配必要的资源.在应用程序关闭套接口后,还应调用WSACleanup()终止对Windows
Sockets DLL的使用,并释放资源,以备下一次使用.</td>
</tr>
<tr>
<td>在这些函数中,实现Windows网络实时通信的关键是异步选择函数WSAAsyncSelect()的使用. 用法及详细说明参见第5.3.7.</td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -