linux虚拟机下的java程序无法广播udp socket到windows主机中

TheBigBangWOW 2018-03-03 01:55:03
//发送端的代码
public class ChatSender extends Thread {

public void run() {
DatagramSocket socket = null;
try {
socket = new DatagramSocket();
BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
String line = null;
DatagramPacket packet = null;
while((line = keyReader.readLine())!=null){
packet = new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("192.168.1.255"), 9090);
socket.send(packet);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
socket.close();
}
}
}



public class ChatReceive extends Thread {
//接收端的代码
@Override
public void run() {
try {
DatagramSocket socket = new DatagramSocket(9090);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while(true){
socket.receive(packet);
System.out.println(packet.getAddress().getHostAddress()+"说:"+ new String(buf,0,packet.getLength()));
}
} catch (IOException e) {
e.printStackTrace();
}
}

}




//调用代码
public class ChatMain {

public static void main(String[] args) {
ChatReceive receive = new ChatReceive();
ChatSender sender = new ChatSender();
receive.start();
sender.start();
}
}


主机和虚拟机都启动了以上的代码
在主机端输入的信息,虚拟机可以接收到,但是虚拟机输入的信息,主机接收不到
虚拟机是桥接模式连接网络的
已经禁用了vmnet1和vmnet8两个虚拟网卡
主机和虚拟机之间如果不用广播而是用明确的ip,可以互相发送udp socket信息

请问是什么原因导致虚拟机无法广播udp信息,谢谢了
...全文
566 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hlz2516 2019-10-24
  • 打赏
  • 举报
回复
题主找到对于wifi的解决方案了嘛
jackyBlithe 2018-03-03
  • 打赏
  • 举报
回复
用有线网络试试
TheBigBangWOW 2018-03-03
  • 打赏
  • 举报
回复
问题用另一种方式解决了,就是用有线网的话,就可以实现虚拟机和主机之间的udp广播 不知道能不能实现用wifi也可以广播
TheBigBangWOW 2018-03-03
  • 打赏
  • 举报
回复
引用 1 楼 ojc8882003 的回复:
广播是要先遍历全部IP地址? 不太懂,来学习下。。。
广播应该是用 网段+225 表示的ip地址发送,然后同一网段的ip都能接收到
aabbabababaa 2018-03-03
  • 打赏
  • 举报
回复
广播是要先遍历全部IP地址? 不太懂,来学习下。。。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧