组播直接连接WIFI设备

时间:2014-03-30 20:16:27

标签: java camera udp multicast sony

我有一台WIFI设备,我正在尝试。从我的macbook我可以通过wifi直接连接到设备。在我有WIFI连接后,我应该能够通过多播与设备通信。 但是,当我连接时尝试将数据报包发送到相机时,我得到一些IOException:

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

1 个答案:

答案 0 :(得分:0)

InetSocketAddress不是InetAddress(它是SocketAddress)。你可能想要这样的东西:

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