2011-07-04 101 views
2

這是我第一次用java編程網絡。 我想在小型網絡中使用它。我正在尋找一種方式發送到某種方式廣播到整個網絡中的所有節點。讓他們知道我的存在。有人告訴我發送數據包到255.255.255.255,這樣網絡中的任何人都會收到它。當我嘗試將Socket設置爲255.255.255.255時出現異常

所以我寫了這段代碼:

try{ 
    Socket socket= new Socket("255.255.255.255", 3550); 
}catch(Exception e){ 
    System.out.println("oops! " + e.getMessage()); 
} 

但不幸的是它打印:

oops! Permission denied 

當我改變 「255.255.255.255」 爲 「192.168.1.3」,這是我的隊友的IP地址,它工作正常。另外,當我將「255.255.255.255」更改爲「192.168.1.255」(根據ifconfig是我的廣播地址)時,我得到一條具有相同消息的異常。

我在adhoc網絡中。
我的操作系統是MAC OS X 10.6
我的隊友是Windows Vista Home Premium操作系統Service Pack 1的

請簡單,我是一個新手:)

在此先感謝。

回答

5

Socket()創建一個流(TCP)套接字。您無法播放流。你需要一個數據報套接字(UDP),所以你應該使用更專門的類DatagramSocket()

+0

感謝您的回覆。現在我在聯網程序中使用DatagramSocket。但是,它又失敗了。 我已經提出了一個新問題,你可以在這裏找到它:http://stackoverflow.com/questions/6579350/sending-packets-to-255-255-255-255-by-java-datagramsocket-fails。 –

1

試圖一個TCP套接字連接到不存在的IP地址255.255.255.255(a)是不可能的和(b)任何地方都不會發送任何東西。它是不一樣的東西通過的DatagramSocket與255.255.255.255的目標地址,這是你被告知該做什麼發送一個UDP數據報

相關問題