如果四重奏识别出一个套接字,那么侦听套接字的四重奏信息是什么?

时间:2018-06-07 06:37:19

标签: linux sockets network-programming

我试图了解accept()创建一个新套接字是什么意思,this question的接受答案非常有用。我的问题来自接受答案的评论部分,因为我认为它应该是一个单独的问题。我的理解是这个

  • (源IP,源端口,目标IP,目标端口,协议)定义了一个套接字。

  • 套接字描述符是一个整数,用作套接字的标识符(源IP,源端口,目标IP,目标端口,协议)

现在除了问题之外,我还想知道我的理解"由accept()和socket()返回的不同套接字描述符是否指向同一个套接字(源ip,源端口,目标ip,目标端口) , 协议)  但表示同一个套接字的不同状态(监听状态,连接到客户端状态),就像同一个文件可以处于读模式/写模式一样#34;是否正确。

2 个答案:

答案 0 :(得分:2)

服务器的侦听套接字正在侦听给定的IP:端口,但未连接到任何人,因此只能通过侦听IP:端口识别它。

建立客户端连接后,accept()会返回连接到特定客户端的 new 套接字,因此服务器IP:端口和客户端IP:端口都可以识别它。

套接字表示特定端点,它可能是底层连接的一部分。套接字描述符就是应用程序引用给定套接字的方式。侦听套接字有1个端点,而连接的套接字有2个端点。这就是为什么accept()必须返回一个与调用accept()的侦听套接字不同的新套接字。

答案 1 :(得分:1)

没有。侦听套接字由2元组标识:IP地址和端口。

  

(源IP,源端口,目标IP,目标端口,协议)定义套接字。

没有。它定义了一个连接。

  

套接字描述符是一个整数,用作套接字的标识符

正确。

  

(源IP,源端口,目标IP,目标端口,协议)

不,见上文。