簡體   English   中英

Windows 8.1 UDP組播

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM