📄 7.html
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>第七章 Windows Sockets 2扩展库函数简要参考</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626906"><A NAME="_Toc336792989"><A NAME="_Toc336793465">第七章</FONT><FONT SIZE=5> Windows Sockets 2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5>扩展库函数简要参考</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626907"><A NAME="_Toc336792990"><A NAME="_Toc336793466"></FONT><FONT FACE="Arial" SIZE=5>7.1 WSAAccept()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:根据条件函数的返回值有条件地接受连接,同时(可选地)创建和</FONT><FONT SIZE=3>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或加入一个套接口组。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> SOCKET WSAAPI WSAAccept ( SOCKET s, struct</P>
<P ALIGN="JUSTIFY"> sockaddr FAR * addr, int FAR * addrlen,</P>
<P ALIGN="JUSTIFY"> LPCONDITIONPROC lpfnCondition, DWORD</P>
<P ALIGN="JUSTIFY"> dwCallbackData );</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:标识一个套接口的描述字,该套接口在</FONT><FONT SIZE=3>listen()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>后监听连接。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">addr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:(可选)指针,指向存放通讯层所知的连接实体地址的缓冲区。</FONT><FONT SIZE=3>addr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数的具体格式由套接口创建时产生的地址族决定。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">addrlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:(可选)指针,指向存放</FONT><FONT SIZE=3>addr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>地址长度的整形数。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">lpfnCondition</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:(可选的)用户提供的条件函数的进程实例地址。该函数根据参数传入的调用者信息作出接受或拒绝的决定,并通过给结果参数赋予特定的值来(可选地)创建和</FONT><FONT SIZE=3>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>或加入一个套接口组。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">dwCallbackData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:作为条件函数参数返回给应用程序的回调数据。</FONT><FONT SIZE=3>WinSock</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>WSAAccept()</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>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> addrlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数引用的整形数初始时包含了</FONT><FONT SIZE=3>addr</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">WSAECONNREFUSED		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>根据条件函数的返回值(</FONT><FONT SIZE=3>CF_REJECT</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">WSAEFAULT 			addrlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数太小(小于</FONT><FONT SIZE=3>sockaddr</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的大小),或者</FONT><FONT SIZE=3>lpfnCondition</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>调用正在进行。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEINVAL				WSAAccept()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用前未执行</FONT><FONT SIZE=3>listen()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用;条件函数中的</FONT><FONT SIZE=3>g</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数非法;条件函数的返回值非法;套接口处于非法状态。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEMFILE				WSAAccept()</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		</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所引用的套接口不是支持面向连接服务类型的。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSATRY_AGAIN			</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>根据条件函数的返回值</FONT><FONT SIZE=3>(CF_DEFER) </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>套接口标志为非阻塞,无连接请求供接受。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">WSAEACCES				</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>被推迟的连接请求超时或撤销。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">另请参阅:</FONT><FONT SIZE=3>accept(), bind(), connect(), getsockopt(),listen(), select(), socket(), SAAsyncSelect(), WSAConnect().</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="黑体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626908"><A NAME="_Toc336792991"><A NAME="_Toc336793467"></FONT><FONT FACE="Arial" SIZE=5>7.2 WSACloseEvent()</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"> BOOL WSAAPI WSACloseEvent( WSAEVENT hEvent );</P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">hEvent</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>TRUE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。如果失败,返回值为假</FONT><FONT SIZE=3>FALSE</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">WSA_INVALID_HANDLE	hEvent</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>不是一个合法的事件对象句柄。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">另请参阅:</FONT><FONT SIZE=3> WSACreateEvent(), 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="_Toc336626909"><A NAME="_Toc336792992"><A NAME="_Toc336793468"></FONT><FONT FACE="Arial" SIZE=5>7.3 WSAConnect()</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>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY"> int WSAAPI WSAConnect ( SOCKET s, const struct</P>
<P ALIGN="JUSTIFY"> sockaddr FAR * name,</P>
<P ALIGN="JUSTIFY"> int namelen, LPWSABUF lpCallerData, LPWSABUF</P>
<P ALIGN="JUSTIFY"> lpCalleeData,</P>
<P ALIGN="JUSTIFY"> LPQOS lpSQOS, LPQOS lpGQOS );</P>
<P ALIGN="JUSTIFY"></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">name</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:欲与套接口连接的远端名字。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">namelen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:名字长度。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">lpCallerData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向用户数据的指针,该数据在建立连接时将传送到远端。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">lpCalleeData</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向用户数据的指针,该数据在建立连接时将从远端传送回本机。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">lpSQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向套接口</FONT><FONT SIZE=3>s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>流描述的指针,每个方向一个。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">lpGQOS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指向套接口组流描述的指针。(如果有套接口组的话)</FONT><FONT SIZE=3> </P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">返回值:</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>0</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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -