繁体   English   中英

组播到直接连接的WIFI设备

[英]Multicast to directly connected WIFI device

我有一个正在试验的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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM