我遇到了Windows上已知的Java 6 bug。我的理解是,獲取網絡掩碼的正常方式是查找網絡前綴長度並做一些轉換。問題是,在Windows上,前綴長度通常不正確地返回,所以當我們得到24或20時,我們得到128.Java和Windows 7:可靠地獲取IPv4網絡掩碼?
在this solution中,建議將-Djava.net.preferIPv4Stack=true
放在Java命令行上。不幸的是,在Windows 7上,添加VM參數或Java命令行似乎沒有任何作用。 (a)有沒有人知道任何其他解決方法可能仍然適用於Windows 7的這個問題?
(b)或者,是否有一種完全不同的方法來獲得可靠的網絡掩碼?
謝謝!
P.S. Here is the bug report that pertains to this。
適當的禮儀規定我列出了其他地方,我問過這個問題:http://stackoverflow.com/questions/9299566/java-windows-7-reliably-getting-ipv4-netmask http:// www。 codeguru.com/forum/showthread.php?t=521196 https://forums.oracle.com/forums/thread.jspa?threadID=2347643&tstart=0 http://www.coderanch.com/t/567601/ sockets/java/Java-Windows-Reliable-getting-IPv – 2012-02-16 17:00:48
奇怪的是...... -Djava.net.preferIPv4Stack = true'虛擬機選項在我的情況下在Windows 7下適用於JRE 1.6。我把它作爲'System.setProperty(「java.net.preferIPv4Stack」,「true」)'放在我的Java代碼中。除非,(庫或其他)重置它。你可以顯示你的IP網絡掩碼? – ecle 2012-02-19 17:18:01
感謝您的代碼行。我使用Netbeans,並且有一個地方可以放置VM選項。我試着把-D放在那裏。不行。我還使用Advanced Installer創建的包裝啓動應用程序,並且可以放置命令行選項。那也行不通。我將嘗試您的建議,在我的主要方法的頂部添加該行代碼。謝謝! – 2012-02-19 19:01:57