2010-12-18 145 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