监听同一UDP端口的多个应用程序:广播IP VS非广播IP wrt获取消息

时间:2016-06-04 14:14:59

标签: c# sockets networking network-programming udp

应用A和B都在同一台计算机上监听和发送UDP端口1337。 App A首先启动(因此它首先绑定到端口1337)。

当他们各自向127.255.255.255:1337或255.255.255.255:1337发送消息时,两者应用程序A和B获取彼此的消息以及他们自己的消息。

当他们各自向127.0.0.1:1337或192.168.1.65:1337发送消息时,非广播地址 A获取B的消息及其自己的回声。 B甚至无法听到自己的消息。 (192.168.1.65是我的计算机的网络IP,其中两个应用程序都在运行)

如果我停止应用A,B可以听到自己的消息。如果我再次启动A,B可以听到两个消息,A可以什么都不做。

为什么在发送到广播IP时消息会重复,而如果它们被发送到非广播地址,它们会以先来先服务的方式分发?有没有为什么要获得一致的行为(设置一些“始终重复”标志)?

以下是一些演示此内容的C#代码:

udp.Send("(((1)))")

您可以运行此应用两次,更改new Udp("255.255.255.255", 1337)中的数字以识别每个。当您使用new Udp("127.0.0.1", 1337)时,两个实例都可以听到这两个消息,而使用super.paintComponents会导致第一个实例只能接收消息。谢谢!

0 个答案:

没有答案