对于客户机而言,要与服务器进行通信,需要向服务器发出连接请求。connect函数用于完成这项功能,该函数的具体信息如下表所示。
头文件 | <sys/types.h> <sys/socket.h> | ||
函数形式 | int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); | ||
返回值 | 成功 | 失败 | 是否设置errno |
0 | −1 | 是 |
说明:connect函数将使用参数sockfd中的套接字连接到参数serv_addr中指定的服务器。参数addrlen为serv_addr指向的内存空间大小。
如果参数sockfd的类型为SOCK_DGRAM,serv_addr参数为数据报发往的地址,且将只接收该地址的数据报。如果sockfd的类型为SOCK_STREAM或SOCK_SEQPACKET,调用该函数将连接serv_addr中的服务器地址。
错误信息:
整数
宏
描述
13 EACCES, EPERM 用户试图在套接字广播标志没有设置的情况下连接广播地址或由于防火墙策略导致连接失败。
98 EADDRINUSE本地地址处于使用状态。
97 EAFNOSUPPORT参数serv_add中的地址非合法地址。
11 EAGAIN没有足够空闲的本地端口。
114 EALREADY套接字为非阻塞套接字,并且原来的连接请求还未完成。
9EBADF 非法的文件描述符。
111 ECONNREFUSED远程地址并没有处于监听状态。
14 EFAULT 指向套接字结构体的地址非法。
115 EINPROGRESS套接字为非阻塞套接字,且连接请求没有立即完成。
4 EINTR 系统调用的执行由于捕获中断而中止。
106 EISCONN 已经连接到该套接字。
101 ENETUNREACH网络不可到达。
88 ENOTSOCK 文件描述符不与套接字相关。
110 ETIMEDOUT 连接超时