应用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
会导致第一个实例只能接收消息。谢谢!