我是套接字编程的新手,所以如果这个问题是基本的,请原谅我;我无法在任何地方找到答案。
什么构成需要新插座?
例如,似乎可以在同一端口上使用相同的套接字fd进行发送和接收。你能发送端口XXXX并在端口YYYY上接收一个插座吗?如果没有,那么是特定于主机/端口组合的套接字吗?
感谢您的见解!
答案 0 :(得分:2)
套接字建立“端点”,由IP地址和端口组成:
是的,单个套接字特定于单个主机/端口组合。
阅读建议:
Beej的网络编程指南:
Unix网络编程:Stevens等人:
答案 1 :(得分:2)
端口号是本地属性,有助于识别发往接收方计算机上该端口的传入数据的套接字端点。每台计算机的每种协议类型(TCP或UDP)和每种系列类型(IPv4或IPv6)都有64K端口。
使用UDP,可以向位于不同端口的许多客户端发送(和接收)。因此,对于以下连接:
UDP_socketA (port p1) <---------> UDP socketB (port p2)
|
|
|
|
UDP socketC (port p3)
因此,socketA可以将数据发送到socketB和socketC,即使它们位于不同的端口号上。它的工作方式是使用UDP套接字,我们通常使用sendto()API,允许我们为每个数据包指定IP地址和端口号。因此,我们可以将一个数据包发送到端口B,将下一个数据包发送到端口C,而不是。
使用TCP,但事实并非如此。一旦建立了连接,让我们在socketA和socketB之间说,那么这些套接字都无法与socketC对话
TCP_socketA (port p1) <---------> TCP socket B (port p2)
|
|
|
|
TCP socketC (port p3)