我有一个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发布于 2014-03-31 21:13:06
InetSocketAddress不是InetAddress (它是SocketAddress)。你可能想要这样的东西:
InetAddress addr = InetAddress.getByName("239.255.255.250");
packet = new DatagramPacket(sendData, sendData.length, addr, 1900);
socket.send(packet);https://stackoverflow.com/questions/22749272
复制相似问题