[英]Windows 8.1 UDP Multicast
我在使UDP多播從Windows 8.1發送到工作時遇到問題。
以下簡單測試程序可在同一主機上運行Windows 7或Ubuntu 13的接口橋接VM內運行。 因此,我確定問題不在Java測試程序或物理網絡配置上。
import java.net.*;
public class multicast_send {
public static void main(String[] args) throws Exception {
DatagramSocket socket = null;
DatagramPacket outPacket = null;
socket = new DatagramSocket();
String msg = "Multicast Test";
outPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getByName("230.0.0.1"), 4446);
socket.send(outPacket);
System.out.println("Server sent : " + msg);
socket.close();
}
}
Windows 8.1下的故障表現為靜默故障,即消息僅未到達遠程主機。
我在Windows 8.1主機上使用了WireShark,但沒有看到發送UDP數據包的跡象。
Windows 8.1防火牆已禁用。
我嘗試了一系列具有相同結果的多播地址和端口(從Win7,Ubuntu而非Windows 8.1運行)
通過瀏覽網絡,我注意到Windows 8.1中引入了對UDP組播問題的一些描述。 但是這種情況似乎與問題描述不符。
在這三種情況下,java環境均為1.7.0.51b13。
我需要在Windows 8.1中進行一些調整才能啟用多播UDP嗎? 我沒有發現Windows 8.1特定的明顯問題嗎?
解決方案是Windows 8.1可以訪問多個接口,以太網適配器和多個VM橋接適配器。
與其他win8.1 UNDP問題的解決方案類似,與其他操作系統不同,似乎沒有為UDP發送選擇默認接口,因此成功的多播依賴於為套接字顯式分配接口。
Socket.setinetrface.getbyname(“以太網適配器的IP地址”)
一旦我這樣做,它就會按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.