📄 7.html
字号:
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对于阻塞套接口来说,返回值表示连接试图是否成功。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对于非阻塞套接口来说,连接试图不一定马上完成。在这种情况下,</FONT><FONT SIZE=3>WSAConnect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回</FONT><FONT SIZE=3>SOCKET_ERROR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,且</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回</FONT><FONT SIZE=3>WSAEWOULDBLOCK. </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>此时应用程序可以:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> 1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。利用</FONT><FONT SIZE=3>select()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数,通过检查套接口是否可写来判断连接请求是否完成。或者,</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。如果应用程序已使用</FONT><FONT SIZE=3>WSAAsyncSelect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数来确定对连接事件的兴趣,则当连接操作完成时应用程序将收到</FONT><FONT SIZE=3>FD _CONNECT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>通知。或者,</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> 3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。如果应用程序已使用</FONT><FONT SIZE=3>WSAEventSelect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数来确定对连接事件的兴趣,则当连接操作完成时相应的事件对象将设置信号。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>对于一个非阻塞套接口来说,在连接试图完成之前,任何对该套接口的</FONT><FONT SIZE=3>WSAConnect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用都将以</FONT><FONT SIZE=3>WSAEALREADY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>错误失败。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果返回值指出连接试图失败(例如</FONT><FONT SIZE=3>WSAECONNREFUSED, WSAENETUNREACH</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,</FONT><FONT SIZE=3>WSAETIMEDOUT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)则应用程序可对该套接口再次调用</FONT><FONT SIZE=3>WSAConnect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANOTINITIALISED		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在调用本</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之前应成功调用</FONT><FONT SIZE=3>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENETDOWN			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEADDRINUSE		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指地址已被使用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINTR				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>通过</FONT><FONT SIZE=3>WSACancelBlockingCall()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数中止了阻塞调用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINPROGRESS		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>一个阻塞的</FONT><FONT SIZE=3>WinSock</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用正在进行中,或者服务提供者仍在处理一个回调函数。(参见</FONT><FONT SIZE=3>B.3.6.6</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>节)</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEALREADY			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在所指定的套接口上正在进行一个非阻塞的</FONT><FONT SIZE=3>connect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>WSAConnect()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEADDRNOTAVAIL	</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>本地机器上无法获得所指定的地址。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEAFNOSUPPORT		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指定地址族中的地址无法与本套接口一起使用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAECONNREFUSED		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>连接试图被拒绝。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEFAULT				name</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或</FONT><FONT SIZE=3>namelen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数不是用户地址空间的一个有效部分;</FONT><FONT SIZE=3>namelen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数太小;</FONT><FONT SIZE=3> lpCalleeData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3> lpSQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>lpGQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的缓冲区太小;或者</FONT><FONT SIZE=3>lpCallerData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的缓冲区太大。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口已与一个地址捆绑。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口未与一个地址捆绑。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL				s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数为监听套接口。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEISCONN			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口已经连接(仅适用于面向连接的套接口)。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENETUNREACH		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>当前无法从本主机联系网络。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOBUFS			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用缓冲区,套接口未连接。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOTSOCK			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>描述字不是一个套接口。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEOPNOTSUPP		lpSQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>lpGQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>中的流描述无法满足。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEPROTONOSUPPORT	</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>服务提供者不支持</FONT><FONT SIZE=3>lpCallerData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAETIMEDOUT			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>连接试图超时,连接未建立。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEWOULDBLOCK		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口标志为非阻塞,连接无法立即完成。当套接口用</FONT><FONT SIZE=3>select()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数设置为读时,可调用</FONT><FONT SIZE=3>select()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEACCES				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>由于</FONT><FONT SIZE=3>setsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>时未允许</FONT><FONT SIZE=3>SO_BROADCAST</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>,无法将一个数据报套接口与一个广播地址连接。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">另请参阅:</FONT><FONT SIZE=3> accept(), bind(), connect(), getsockname(),getsockopt(), socket(), select(),</P>
<P ALIGN="JUSTIFY">WSAAsyncSelect(), WSAEventSelect().</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626910"><A NAME="_Toc336792993"><A NAME="_Toc336793469"></FONT><FONT FACE="Arial" SIZE=5>7.4 WSACreateEvent()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:创建一个新的事件对象。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> #include <winsock2.h></P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> WSAEVENT WSAAPI WSACreateEvent( VOID );</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果函数成功,则返回值即是事件对象的句柄。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果函数失败,返回</FONT><FONT SIZE=3>WSA_INVALID_EVENT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。应用程序可通过调用</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数获取进一步的错误信息。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANOTINITIALISED		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在调用本</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之前应成功调用</FONT><FONT SIZE=3>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENETDOWN			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSA_NOT_ENOUGH_MEMORY 	</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无足够内存创建事件对象。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">另请参阅:</FONT><FONT SIZE=3> WSACloseEvent(), WSAEnumNetworkEvents(),WSAEventSelect(), WSAGetOverlappedResult(),WSARecv(), WSARecvFrom(), WSAResetEvent(),WSASend(), WSASendTo(), WSASetEvent(),WSAWaitForMultipleEvents().</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626911"><A NAME="_Toc336792994"><A NAME="_Toc336793470"></FONT><FONT FACE="Arial" SIZE=5>7.5 WSADuplicateSocket()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:为一个共享套接口创建一个新的描述字。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> #include <winsock2.h></P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> SOCKET WSAAPI WSADuplicateSocket ( SOCKET s,</P>
<P ALIGN="JUSTIFY"> WSATASK hTargetTask );</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指定本地套接口描述字。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">hTargetTask</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指定使用共享套接口的目标任务的句柄。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>若无错误发生,</FONT><FONT SIZE=3>WSADuplicateSocket()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回新的套接口描述字。否则的话,将返回</FONT><FONT SIZE=3>INVALID_SOCKET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>错误,应用程序可通过</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>来获取相应的错误代码。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSANOTINITIALISED		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在调用本</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之前应成功调用</FONT><FONT SIZE=3>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENETDOWN			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数中有非法值。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINPROGRESS		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>一个阻塞的</FONT><FONT SIZE=3>WinSock</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用正在进行中,或者服务提供者仍在处理一个回调函数。(参见</FONT><FONT SIZE=3>B.3.6.6</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>节)</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEMFILE				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用套接口描述字。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOBUFS			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用缓冲区空间,套接口未创建。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOTSOCK			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>描述字不是一个套接口。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">另请参阅:</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626912"><A NAME="_Toc336792995"><A NAME="_Toc336793471"></FONT><FONT FACE="Arial" SIZE=5>7.6 WSAEnumNetworkEvents()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:检测所指定套接口上网络事件的发生。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> #include <winsock2.h></P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> int WSAAPI WSAEnumNetworkEvents ( SOCKET s,</P>
<P ALIGN="JUSTIFY"> WSAEVENT hEventObject, LPWSANETWORKEVENTS</P>
<P ALIGN="JUSTIFY"> lpNetworkEvents, LPINT lpiCount);</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -