我试图了解accept()创建一个新套接字是什么意思,this question的接受答案非常有用。我的问题来自接受答案的评论部分,因为我认为它应该是一个单独的问题。我的理解是这个
(源IP,源端口,目标IP,目标端口,协议)定义了一个套接字。
套接字描述符是一个整数,用作套接字的标识符(源IP,源端口,目标IP,目标端口,协议)
现在除了问题之外,我还想知道我的理解"由accept()和socket()返回的不同套接字描述符是否指向同一个套接字(源ip,源端口,目标ip,目标端口) , 协议) 但表示同一个套接字的不同状态(监听状态,连接到客户端状态),就像同一个文件可以处于读模式/写模式一样#34;是否正确。
答案 0 :(得分:2)
服务器的侦听套接字正在侦听给定的IP:端口,但未连接到任何人,因此只能通过侦听IP:端口识别它。
建立客户端连接后,accept()
会返回连接到特定客户端的 new 套接字,因此服务器IP:端口和客户端IP:端口都可以识别它。
套接字表示特定端点,它可能是底层连接的一部分。套接字描述符就是应用程序引用给定套接字的方式。侦听套接字有1个端点,而连接的套接字有2个端点。这就是为什么accept()
必须返回一个与调用accept()
的侦听套接字不同的新套接字。
答案 1 :(得分:1)
没有。侦听套接字由2元组标识:IP地址和端口。
(源IP,源端口,目标IP,目标端口,协议)定义套接字。
没有。它定义了一个连接。
套接字描述符是一个整数,用作套接字的标识符
正确。
(源IP,源端口,目标IP,目标端口,协议)
不,见上文。