虚拟机guest和Windows主机之间的UDP数据包丢失

时间:2015-08-10 12:08:02

标签: java networking virtualbox datagram

Windows(win7 / x64)主机在其" VirtualBox主机网络适配器"上使用IP 192.168.56.1。 linux(Debian 8)Virtualbox guest虚拟机配置为“仅限主机的网络”。它使用静态IP地址192.168.56.100 主机和来宾可以相互ping通,并且来自guest虚拟机的UDP数据包具有:

$ echo "hello"|netcat -u 192.168.56.1 10067
Wireshark检测到

,在主机上收听' VirtualBox界面。
但是它们似乎没有通过网络堆栈, 我的简单UDP侦听程序不接收数据包:

package test;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class Test {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(10067, InetAddress.getByAddress(new byte[]{(byte) 192,(byte) 168,56,1}));
        DatagramPacket pkt = new DatagramPacket(new byte[1500], 1500);
        System.out.println("waiting...");
        socket.receive(pkt);
        System.out.println("received "+pkt.getLength());
    }
}

到目前为止我尝试过:

  • 确保linux iptables不活动
  • 禁用Windows防火墙
  • 启用防火墙,但添加允许UDP与本地端口10067(域名和私人和公共,任何IP和IP)的传入流量规则。 电脑&用户&程序)
  • 将套接字绑定到" *"而不是" 192.168.56.1" (socket=new DatagramSocket(10067)
  • 如果数据包是从ncat -u 192.168.56.1 10067的窗口发送的,程序会正确接收
  • 如果将数据包发送给同一个“仅限主机”的另一个Linux来宾,则相同的测试成功。网络

有什么建议吗?

0 个答案:

没有答案