请输入您要查询的百科知识:

 

词条 WSAConnect()
释义

§ 简述:

创建一个与远端的连接,交换连接数据,并根据所提供的流描述确定所需的服务质量。

#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().

随便看

 

百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/9/22 1:57:26