Linux下connect()函数的错误代码对应含义
windows和linux下的connect系统接口有自己的一套返回码以及返回含义
Linux
- EBADF:参数socket未指定一个合法的描述符
- ENOTSOCK 参数socket未指定一个套接字描述符
- EAFNOSUPPORT 远程端点指定的地址族不能与这种类型的套接字一起使用
- EADDRNOTAVAIL:指定的地址不可用
- EISCONN:套接字已被连接
- ETIMEDOUT:(只用于TCP)协议因未成功建立一个连接而超时
- ECONNREFUSED:(只用于TCP)连接被远程机器拒绝
- ENETUNREACH:(只用于TCP)网络当前不可到达
- EADDRINUSE:指定的地址正在使用
- EINPROGRESS:(只用于TCP)套接字是非阻塞的,且一个连接尝试将被阻塞
- EALREADY:(只用于TCP)套接字是非阻塞的,且调用将等待前一个连接尝试完成
windows下(摘自百度百科)
- WSAENOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
- WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
- WSAEADDRINUSE:所指的地址已在使用中。
- WSAEINTR:通过一个WSACancelBlockingCall()来取消一个(阻塞的)调用。
- WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
- WSAEADDRNOTAVAIL:在本地机器上找不到所指的地址。
- WSAENOTSUPPORT:所指族中地址无法与本套接口一起使用。
- WSAECONNREFUSED:连接尝试被强制拒绝。
- WSAEDESTADDREQ:需要目的地址。
- WSAEFAULT:namelen参数不正确。
- WSAEINVAL:套接口没有准备好与一地址捆绑。
- WSAEISCONN:套接口早已连接。
- WSAEMFILE:无多余文件描述字。
- WSAENETUNREACH:当前无法从本主机访问网络。
- WSAENOBUFS:无可用缓冲区。套接口未被连接。
- WSAENOTSOCK:描述字不是一个套接口。
- WSAETIMEOUT:超时时间到。
- WSAEWOULDBLOCK:套接口设置为非阻塞方式且连接不能立即建立。可用select()调用对套接口写,因为select()时会进行连接。