socket#
int socket(int domain, int type, int protocol);
socket () 创建一个用于通信的端点并返回一个指向该端点的文件描述符。成功调用后返回的文件描述符将是进程当前未打开的编号最小的文件描述符。
connect#
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
connect () 系统调用将文件描述符 sockfd 引用的套接字连接到 addr 指定的地址。addrlen 参数指定 addr 的大小。addr 中地址的格式由套接字 sockfd 的地址空间决定;有关详细信息,请参阅 socket (2)。 如果套接字 sockfd 的类型为 SOCK_DGRAM,则 addr 是默认情况下发送数据报的地址,也是接收数据报的唯一地址。如果套接字的类型为 SOCK_STREAM 或 SOCK_SEQPACKET,此调用将尝试与绑定到 addr 指定地址的套接字建立连接。
accept#
int accept(
int sockfd,
struct sockaddr *_Nullable restrict addr,
socklen_t *_Nullable restrict addrlen
);
int accept4(
int sockfd,
struct sockaddr *_Nullable restrict addr,
socklen_t *_Nullable restrict addrlen,
int flags
);
accept () 系统调用用于基于连接的套接字类型 (SOCK_STREAM、SOCK_SEQPACKET)。它提取监听套接字 sockfd 的待处理连接队列中的第一个连接请求,创建一个新的已连接套接字,并返回一个指向该套接字的新文件描述符。新创建的套接字不处于监听状态。原始套接字 sockfd 不受此调用的影响。
bind#
int bind(
int sockfd,
const struct sockaddr *addr,
socklen_t addrlen
);
使用 socket (2) 创建套接字时,它存在于名称空间(地址系列)中,但未分配地址。bind () 将 addr 指定的地址分配给文件描述符 sockfd 引用的套接字。addrlen 指定 addr 指向的地址结构的大小(以字节为单位)。
listen#
int listen(int sockfd, int backlog);
listen () 将 sockfd 引用的套接字标记为被动套接字,即,将用于使用 accept (2) 接受传入的连接请求的套接字。 sockfd 参数是一个文件描述符,它引用 SOCK_STREAM 或 SOCK_SEQPACKET 类型的套接字。 backlog 参数定义 sockfd 的待处理连接队列可以增长的最大长度。如果在队列已满时到达连接请求,则客户端可能会收到带有 ECONNREFUSED 指示的错误,或者,如果底层协议支持重新传输,则可能会忽略该请求,以便稍后重新尝试连接成功。