2014-03-30 68 views
0

我有一個WIFI設備,我正在試驗。從我的MacBook我可以直接連接到無線設備。在我有WIFI連接後,我應該能夠通過多播與設備進行通信。 然而,當我嘗試將數據報包發送到時,我將相機連接我得到一些IOException異常:多播到直接連接的WIFI設備

java.io.IOException: Can't assign requested address 

我回顧了一些網絡設置,並發現多播是爲我的筆記本電腦啓用,還我將使用的多播地址(239.255.255.250)添加到路由表中。 (閱讀此地)仍然沒有運氣...

爲什麼我從我的應用程序中得到這個異常?

這裏是我用來連接代碼:

DatagramSocket socket = null; 
DatagramPacket packet = null; 
try { 
    socket = new DatagramSocket(); 
    InetSocketAddress iAddress = new InetSocketAddress("239.255.255.250", 1900); 
    packet = new DatagramPacket(sendData, sendData.length,iAddress); 
    socket.send(packet); 

我認爲這是與我的網絡/設置。 當我重新連接到我的無線存取權限點,我的應用程序並沒有給這個例外,我可以在控制檯中看到軟件包:

MacBook-Pro-van-Roy:~ Roy$ sudo tcpdump -ni en1 host 239.255.255.250 
Password: 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on en1, link-type EN10MB (Ethernet), capture size 65535 bytes 
19:54:18.688367 IP 192.168.1.34.57428 > 239.255.255.250.1900: UDP, length 129 
19:54:18.789447 IP 192.168.1.34.57428 > 239.255.255.250.1900: UDP, length 129 
19:54:18.890506 IP 192.168.1.34.57428 > 239.255.255.250.1900: UDP, length 129 

回答

0

InetSocketAddress不是InetAddress(這是一個SocketAddress)。你可能想要這樣的事情:

InetAddress addr = InetAddress.getByName("239.255.255.250"); 
packet = new DatagramPacket(sendData, sendData.length, addr, 1900); 
socket.send(packet); 
+1

我不認爲這與我的代碼有任何關係。你的片段給了我同樣的例外。請參閱我最近編輯中的其他信息。 關於如何調試的任何想法? – RoyB

相關問題