2010-12-18 144 views
1

我目前正在研究简单的java程序,它应该能够在运行我的第二个java应用程序的本地网络中找到计算机,所有这些都使用UDP网络。其中一个应用程序打开DatagramSocket并启动处理所有输入的线程。另一个应用程序连接到当前LAN网络的广播地址(例如192.16.0.255),发送一个数据包并接收响应。我不是很熟悉这种工作方式,但这里是我想知道的:连接到广播IP地址

如果我在同一网络的不同计算机上启动两个响应应用程序,并在其他计算机上运行客户端应用程序,那些将连接到? 我以为它会连接并发送数据包到两个,但它只连接到其中一个,有时不是同一个。

你能向我解释这件事吗?我会很感激。

+0

“连接”是什么意思? UDP没有这种东西,你只需要发送一个数据报到某个地址。你可以发布一些广播代码吗?发送到广播地址的数据报应通常到达两台监听计算机。 – 2010-12-18 18:32:57

回答

3

如果我在同一网络的不同计算机上启动两个响应应用程序,并在其他计算机上运行客户端应用程序,它们将连接到哪些应用程序?

无论是UDP还是无连接协议。

我认为它会连接并发送数据包到两个,但它只连接到其中一个,有时不相同。

UDP是一个有损协议,有时数据会同时发送到一个或两个。您的路由器可能会设置为尝试引导广播流量,但通常它会尝试将所有数据包发送给所有侦听器。

顺便说一句:所有的监听者必须在192.168.0.255 C类子网上。 IP地址为192.168.1.1的主机可能看不到此数据包。

+0

当然它并不实际连接。据我了解,UDP协议将在整个网络中分别发送数据报,其中一些可能无法到达目的地或全部。但是,如果我拥有简单的家庭网络,这并不是什么大问题,我试图多次启动应用程序以查看会发生什么,并且我只接收来自一台计算机的数据报。顺便说一句,我的网络设置是:PC_1 IP:192.168.0.1; PC_2 iP:192.168.0.16;子网掩码:255.255.255.0和我使用广播IP:192.168.0.255 – Martin 2010-12-18 20:34:46

+0

我想我有它,我将不得不接收所有包含数据报的数据报,因为我没有意识到他们都在那里,但并不是每次都在相同的顺序。谢谢你的时间:-) – Martin 2010-12-18 20:49:31

+0

两台PC都应该看到所有的数据包。如果您的PC使用的是192.168.0.1,那么您的网关/交换机/路由器使用什么?如果你的网关是混淆事物的默认(即相同)。 – 2010-12-18 20:51:10