套接字UDP一个套接字,不同的端口

时间:2013-10-10 17:31:46

标签: sockets udp port hostname

我是套接字编程的新手,所以如果这个问题是基本的,请原谅我;我无法在任何地方找到答案。

什么构成需要新插座?

例如,似乎可以在同一端口上使用相同的套接字fd进行发送和接收。你能发送端口XXXX并在端口YYYY上接收一个插座吗?如果没有,那么是特定于主机/端口组合的套接字吗?

感谢您的见解!

2 个答案:

答案 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)
相关问题