⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7.html

📁 WinSock编程规范及应用
💻 HTML
📖 第 1 页 / 共 5 页
字号:
</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&#9;&#9;</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&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEADDRINUSE&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指地址已被使用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINTR&#9;&#9;&#9;&#9;</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&#9;&#9;</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&#9;&#9;&#9;</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&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>本地机器上无法获得所指定的地址。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEAFNOSUPPORT&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指定地址族中的地址无法与本套接口一起使用。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAECONNREFUSED&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>连接试图被拒绝。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEFAULT&#9;&#9;&#9;&#9;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&#9;&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口已与一个地址捆绑。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL&#9;&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口未与一个地址捆绑。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL&#9;&#9;&#9;&#9;s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数为监听套接口。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEISCONN&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口已经连接(仅适用于面向连接的套接口)。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENETUNREACH&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>当前无法从本主机联系网络。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOBUFS&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用缓冲区,套接口未连接。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOTSOCK&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>描述字不是一个套接口。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEOPNOTSUPP&#9;&#9;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&#9;</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&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>连接试图超时,连接未建立。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEWOULDBLOCK&#9;&#9;</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&#9;&#9;&#9;&#9;</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 &lt;winsock2.h&gt;</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&#9;&#9;</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&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSA_NOT_ENOUGH_MEMORY &#9;</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 &lt;winsock2.h&gt;</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&#9;&#9;</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&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL&#9;&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数中有非法值。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINPROGRESS&#9;&#9;</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&#9;&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用套接口描述字。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOBUFS&#9;&#9;&#9;</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>无可用缓冲区空间,套接口未创建。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAENOTSOCK&#9;&#9;&#9;</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 &lt;winsock2.h&gt;</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 + -