int accept(int socket, struct sockaddr *restrict address,socklen_t *restrict address_len);
accept 方法接收一个监听的文件描述符(socket),并返回一个连接的文件描述符。当然,它们是不同的。但这两个套接字有相同的端口,为什么它们不同呢?
listen
方法监听连接,如果 TCP 三次握手完成,则该套接字变为可接受状态。在 accept
过程中,如何将监听套接字传输到新的连接文件描述符套接字?
listen
还是accept
中创建的? - wwulfriclisten()
中创建它们毫无意义。因为还没有连接。这是一个奇怪的问题。 - user207421listen()
打开一个后备队列,在本地IP/端口上执行与传入TCP客户端的三次握手。accept()
使用监听套接字来知道从哪个队列中拉出连接的TCP客户端,然后返回一个新的套接字,该套接字具有监听IP/端口和客户端IP/端口。使用已接受的套接字发送的任何数据包都会发送到客户端IP/端口,并且使用这两个IP/端口对的任何接收数据包都可以使用已接受的套接字进行读取。 - Remy Lebeau