首页
社区
课程
招聘
[求助]udp多播抓不到包问题
发表于: 2017-5-29 12:38 3807

[求助]udp多播抓不到包问题

2017-5-29 12:38
3807
代码如下
package socket;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class SocketClient {
  public static void main(String[] args) 
  {
	  int port=9111;
	  String host="239.255.255.239";
	  String data="Hello world";
	  while(true)
	  {
      try 
      {
          InetAddress ip = InetAddress.getByName(host);
          DatagramPacket packet = new DatagramPacket(data.getBytes(),data.length(),ip,port);
          MulticastSocket ms = new MulticastSocket(55665)
          ms.joinGroup(ip);  
          ms.setTimeToLive(1);  
          ms.send(packet);
          System.out.println("I have send it");
          ms.close();
      } 
      catch (Exception e) 
      {
          e.printStackTrace();
      }
	  }
  }
}

向外多播一条信息,我在真机里面运行,用wireshark抓不到包,但在虚拟机里可以抓到包,请问为什么?



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 60
活跃值: (444)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
2
找到原因了,是网卡的原因,默认走的VirtualBox  Host-Only  Network这个虚拟机网卡,我抓的真实的无线网卡,所以没有包,而用vc写的代码,是默认走的ipconfig后第一个网卡,也就是我的无线网卡,所以有包。java默认走的是控制面板网络连接中的第一个网卡,是虚拟网卡,所以抓无线网卡一直都没抓到包。

应该怎样设置java  多播走哪个网卡呢???
2017-5-29 12:52
0
雪    币: 60
活跃值: (444)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
3
   InetAddress LoaclIp = InetAddress.getByName("192.168.199.133");
   ms.setInterface(LoaclIp);

加上这一段就好了,

192.168.199.133

是你想要使用的网卡的IP,因为VC里面默认是IPCONFIG后的第一个网卡,而无线网卡正好是第一个,vc里面我也没有设置,所以忽略了使用哪个网卡发送这个问题,而java跟vc的算法有不同,产生了问题,vc中bind就绑定了本地真实网卡的IP。

对TCPIP协议还是不够熟悉,遇到问题还是得靠自己。

2017-5-29 13:27
0
游客
登录 | 注册 方可回帖
返回
//