Linux下connect()函数的错误代码对应含义

  • Post author:
  • Post category:linux




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()时会进行连接。