词条 | WSAConnect() |
释义 | WSAConnect() 是 Winsock 2 版本中的连接函数,作用是创建一个与远端的连接,交换连接数据,并根据所提供的流描述确定所需的服务质量。 示例#include <winsock2.h> int WSAAPI WSAConnect ( SOCKET s, const struct sockaddr FAR * name, int namelen, LPWSABUF lpCallerData, LPWSABUF lpCalleeData, LPQOS lpSQOS, LPQOS lpGQOS ); s:用于描述一个未连接套接口的描述字。 name:欲与套接口连接的远端名字。 namelen:名字长度。 lpCallerData:指向用户数据的指针,该数据在建立连接时将传送到远端。 lpCalleeData:指向用户数据的指针,该数据在建立连接时将从远端传送回本机。 lpSQOS:指向套接口s流描述的指针,每个方向一个。 lpGQOS:指向套接口组流描述的指针。(如果有套接口组的话) 返回值如果无错误发生,WSAConnect()返回0。否则的话,将返回INVALID_SOCKET错误,应用程序可通过WSAGetLastError()来获取相应的错误代码。 对于阻塞套接口来说,返回值表示连接试图是否成功。 对于非阻塞套接口来说,连接试图不一定马上完成。在这种情况下,WSAConnect()返回SOCKET_ERROR,且WSAGetLastError()返回WSAEWOULDBLOCK. 此时应用程序可以: 1。利用select()函数,通过检查套接口是否可写来判断连接请求是否完成。或者, 2。如果应用程序已使用WSAAsyncSelect()函数来确定对连接事件的兴趣,则当连接操作完成时应用程序将收到FD _CONNECT通知。或者, 3。如果应用程序已使用WSAEventSelect()函数来确定对连接事件的兴趣,则当连接操作完成时相应的事件对象将设置信号。 对于一个非阻塞套接口来说,在连接试图完成之前,任何对该套接口的WSAConnect()调用都将以WSAEALREADY错误失败。 如果返回值指出连接试图失败(例如WSAECONNREFUSED, WSAENETUNREACH,WSAETIMEDOUT)则应用程序可对该套接口再次调用WSAConnect()函数。 错误代码WSANOTINITIALISED 在调用本API之前应成功调用WSAStartup()。 WSAENETDOWN 网络子系统失效。 WSAEADDRINUSE 所指地址已被使用。 WSAEINTR 通过WSACancelBlockingCall()函数中止了阻塞调用。 WSAEINPROGRESS 一个阻塞的WinSock调用正在进行中,或者服务提供者仍在处理一个回调函数。(参见B.3.6.6节) WSAEALREADY 在所指定的套接口上正在进行一个非阻塞的connect()或WSAConnect()调用。 WSAEADDRNOTAVAIL 本地机器上无法获得所指定的地址。 WSAEAFNOSUPPORT 所指定地址族中的地址无法与本套接口一起使用。 WSAECONNREFUSED 连接试图被拒绝。 WSAEFAULT name或namelen参数不是用户地址空间的一个有效部分;namelen参数太小; lpCalleeData、 lpSQOS和lpGQOS的缓冲区太小;或者lpCallerData的缓冲区太大。 WSAEINVAL 套接口已与一个地址捆绑。 WSAEINVAL 套接口未与一个地址捆绑。 WSAEINVAL s参数为监听套接口。 WSAEISCONN 套接口已经连接(仅适用于面向连接的套接口)。 WSAENETUNREACH 当前无法从本主机联系网络。 WSAENOBUFS 无可用缓冲区,套接口未连接。 WSAENOTSOCK 描述字不是一个套接口。 WSAEOPNOTSUPP lpSQOS和lpGQOS中的流描述无法满足。 WSAEPROTONOSUPPORT 服务提供者不支持lpCallerData参数。 WSAETIMEDOUT 连接试图超时,连接未建立。 WSAEWOULDBLOCK 套接口标志为非阻塞,连接无法立即完成。当套接口用select()函数设置为读时,可调用select()。 WSAEACCES 由于setsockopt()时未允许SO_BROADCAST,无法将一个数据报套接口与一个广播地址连接。 另请参阅: accept(), bind(), connect(), getsockname(),getsockopt(), socket(), select(), WSAAsyncSelect(), WSAEventSelect(). |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。