不同的端口用于收听和阅读

时间:2012-10-26 15:42:16

标签: sockets network-programming p2p

我应该在对等应用程序中使用不同的端口进行侦听和读取吗?如果是这样,为什么不是单个端口进行收听和阅读?

2 个答案:

答案 0 :(得分:1)

如果您正在谈论TCP,则无法做出选择:接受的套接字使用与侦听端口相同的本地端口(如果需要,出站端口必须使用不同的端口)。如果您正在谈论UDP,则没有理由使用多个套接字,因此没有机会使用多个端口。所以两种情况下的答案都是一样的:使用一个端口。

答案 1 :(得分:0)

如果这是UDP,则将套接字绑定到要侦听的端口号,并且在写入时,您正在写入尚未绑定到任何特定端口的套接字(对于发送并不重要),因此您可以使用相同的端口进行读写而不会出现任何问题。只需将目标IP的端口设置为您正在侦听的相同端口号即可。我更喜欢这样做,因为当我用Wireshark之​​类的东西嗅探线路上的流量时,我可以通过查看端口号来识别我的流量(发送和接收)(而不是寻找发送端口和接收端口)。另一方面,您可能希望能够单独识别发送和接收,这样就不会使用相同的端口号进行发送和接收。

如果这类似于基于多播或广播的“对等发现”协议,则需要使发送和接收端口相同。在这种情况下,一个对等体既是相同数据的发送者又是接收者,因此对于读取和写入,所有对等体的端口号必须相同。如果发送和接收的端口号不同,则数据将被发送但从未接收过。