版权所有 © 2014 tutorialspoint
connect - 在套接字上启动连接
#include <sys/types.h> #include <sys/socket.h> int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
connect() 系统调用将文件描述符 sockfd 引用的套接字连接到 serv_addr 指定的地址。addrlen 参数指定 serv_addr 的大小。serv_addr 中地址的格式由套接字 sockfd 的地址空间确定;有关更多详细信息,请参见 socket(2)。
如果套接字 sockfd 的类型为 SOCK_DGRAM,则 serv_addr 是默认情况下数据报发送到的地址,也是仅接收数据报的地址。如果套接字的类型为 SOCK_STREAM 或 SOCK_SEQPACKET,则此调用尝试连接到绑定到 serv_addr 指定的地址的套接字。
通常,基于连接的协议套接字可能只能成功调用 connect() 一次;无连接协议套接字可以使用 connect() 多次来更改其关联。无连接套接字可以通过将 sockaddr 的 sa_family 成员设置为 AF_UNSPEC 来连接到一个地址来解散关联。
如果连接或绑定成功,则返回零。如果出错,则返回 -1,并且 errno 被相应地设置。
以下仅是一般的套接字错误。可能还有其他特定于域的错误代码。
SVr4, 4.4BSD(connect() 函数首次出现在 4.2BSD 中)。
connect() 的第三个参数实际上是一个 int(这就是 4.x BSD 和 libc4 和 libc5 所具有的)。一些 POSIX 混淆导致了现在的 socklen_t,glibc 也使用它。另请参见 accept(2)。
使用带有 AF_UNSPEC 地址的 connect() 调用断开套接字连接尚未实现。
accept (2)
bind (2)
getsockname (2)
listen (2)
path_resolution (2)
socket (2)
广告