JGroups在兩臺機器之間找不到對方的解決方法

問題描述:使用JGroups編寫了一個基於ip_mcast的程序,在同一臺機器上能正常運行,在局域網內的兩臺機器上運行卻找不到對方。

1.覈對兩臺機子的ip,確實在同一子網下。

2.查看運行時輸出,發現兩臺機子綁定的ip一個是ipv6,一個是ipv4。把默認綁定ipv6的那臺機子修改爲它的ipv4地址(-Djgroups.bind_addr=223.3.96.192),再試還是不能相互發現。

3.看了官網manual的"2.8 It doen't work"一章,懷疑學校局域網不支持多播,運行JGroups的tests包下的McastReceiverTest和McastSenderTest,發現多播能正常使用,但Sender發一次消息,Receiver會接收到多次。

4.查看ipconfig,出現幾十個地址,包括十幾個ipv6的地址。

5.懷疑廣播地址或者端口被禁用,在協議棧中配置廣播地址和端口,將它們設置爲3中證實能使用的地址和端口,仍然沒用。

6.安裝虛擬機,在本機和虛擬機上執行程序,地址綁定爲vmware的虛擬網絡地址,仍然不行。

7.安裝虛擬機2,在虛擬機1和虛擬機2上執行程序,地址綁定爲vmware的虛擬網絡地址,居然成功了。

8.實體機上不行,虛擬機上可以,糾結了2天。

9.無意間看了

在兩臺主機上運行,啓動時加入

-Djava.net.preferIPv4Stack=true
居然成功了。



總結:

1.對官網文檔研究不仔細

2.對ipv6不熟,以爲2.9章和我的程序沒什麼關係。

3.分析能力不夠,根據測試結果:“本機和另一臺機器不成功,本機和虛擬機不成功,虛擬機和虛擬機成功”,應該懷疑是本機的問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章