开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

connect

接口名称

*connect(int sockfd, const struct sockaddr addr, socklen_t addrlen)

接口描述

发起socket连接。

允许Bind已存在连接的地址,如果Bind到已存在的本地连接地址,在Connect到同一个对端时会返回失败。

参数说明

参数说明备注
sockfd通信节点描述符传入socket描述符。
*addr通信对端地址支持IPv4地址,类型为struct sockaddr_in。
addrlen地址长度地址长度,必须与第二个参数的地址长度一致。

返回值

类型:int

  • 0:成功
  • -1:表示失败,并设置errno以指示错误类型

错误码

错误码描述
EADDRINUSE地址已被使用。
EADDRNOTAVAIL套接字未绑定地址,且试图绑定临时端口时,当前暂无可用临时端口号。
EAFNOSUPPORT所指定的地址对于所指定套接字的地址族而言,不是一个有效的地址。
EALREADY套接字是非阻塞的,并且之前的连接尝试尚未完成。
ECONNREFUSED目标地址未侦听连接或拒绝连接请求。
EINVALaddrlen参数不是地址族的有效长度。
EFAULT套接字结构地址在用户的地址空间之外。
EINPROGRESS套接字是非阻塞的,连接不能立即完成。
EISCONN套接字已连接。
ETIMEDOUT尝试连接时超时。
ENETUNREACH网络上暂无可用路由。
EINTR被信号中断。
EOPNOTSUPP套接字正在被侦听,无法连接。
ENETDOWN用于到达目的地的本地网络接口已关闭。
ELIBBAD系统符号加载失败。
EINVAL套接字存在,但是套接字对应的数据结构存在异常。
EINVAL共线程部署模式时,sockfd的worker id和当前线程的worker id不一致,即socket跨worker线程调用。