2013-01-24 34 views
1

問題:
1-客戶端1偵聽子網A的IP
2-服務器發送廣播消息到子網B.
3-客戶端1也通過讀此消息它在子網A中的IP。
- 如果消息不是廣播而是單播,則不會出現這種情況。在單個NIC多個IP:UDP廣播

我正在嘗試編寫一個Java應用程序,用於監聽單個網絡接口上定義的一些IP和端口。下面你可以找到我的網絡配置的示例:

netsh interface ip>show address

Configuration for interface "Local Area Connection"
DHCP enabled: No
IP Address: 22.108.131.1
SubnetMask: 255.255.255.0
IP Address: 22.108.132.1
SubnetMask: 255.255.255.0
IP Address: 22.108.133.1
SubnetMask: 255.255.255.0
InterfaceMetric: 0

我開報頻道,然後將綁定到這些IP地址。對於每個IP,我有不同的線程來響應來自通道的消息。

現在的問題是,一個服務器發送UDP廣播消息

22.108.131.255
22.108.132.255
等。

但是,在創建的線程中偵聽22.108.131.1,例如,我正在接收目標爲22.108.132.255的廣播消息。我使用Wireshark檢查傳入消息,它告訴我消息以22.108.132.255正確的形式出現,但是在我的應用程序中,我看到消息的端點是22.108.131.1,這是偵聽線程。

起初我以爲我的實現是錯誤的,但更令人驚訝的問題是傳入的非廣播消息。我的意思是,如果消息的目的地是22.108.131.1,那麼22.108.132.1不會收到,這顯然應該是。但是我不明白的是什麼時候它是關於廣播信息的,爲什麼它不能像它應該那樣運行。

我不確定問題是否由windows多IP配置引起的。但是我正在觀察的是操作系統將子網-A的廣播消息傳遞給子網-B。

另一件可能的線索是,我只討論了上面的22.108.131.1和22.108.132.1,儘管我也定義了22.108.133.1。如果我不打開該IP的數據報通道,我仍然可以從其他IP讀取該子網的廣播消息。

所以我在這裏錯過了什麼?或者它是Windows的網絡處理的本質?

回答

0

以255結尾的IP是廣播消息,將由網絡中的每個節點聽到。

+1

我相信OP知道 - 只要看看標題和內容。他擔心的是收到的終端地址。 – andr

+1

鮑勃,歡迎來到堆棧。很高興幫助人們。我喜歡它。但有時我發現自己回答了一個人問題的一小部分。在這些情況下,我會問自己,如果我幫助解決了問題,或者只是以他們的方式拋出一些事實。我希望你繼續做出貢獻,但在這種情況下,我問,你是否幫助Hakan提出他的問題?他現在有可能解決他的困境嗎?有沒有可以添加的分析可以提供進一步的幫助? –

+0

其實這是不正確的。我知道這是一個廣播消息,我想我在我的帖子中明確表示。但是,廣播消息的發送地址會根據配置而改變,例如子網掩碼。 –