我想在WiFi网络中发送和接收数据包。 使用以下代码
发送数据包。
int id = Integer.parseInt(text_device.getText().trim());
JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[id], 65535, true, 20);
JpcapSender sender = jpcap.getJpcapSenderInstance();
TCPPacket packet = new TCPPacket(210, 210, 0l, 12l, true, true, true, true, true, true, true, true, 1, 2);
packet.setIPv4Parameter(0, true, true, true, 0, true, true, true, 0, 1010101, 100, IPPacket.IPPROTO_TCP, InetAddress.getLocalHost(), InetAddress.getByName(text_ip.getText().trim()));
packet.data = "Sample Data".getBytes();
Date date = new Date();
packet.usec = date.getTime();
packet.sec = date.getTime();
EthernetPacket ether = new EthernetPacket();
ether.src_mac = new byte[]{(byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1};
ether.dst_mac = new byte[]{(byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255};
ether.frametype = EthernetPacket.ETHERTYPE_IP;
packet.datalink = ether;
sender.sendPacket(packet);
要接收数据包,我在public void receivePacket(Packet packet)
TCPPacket tcp = (TCPPacket) packet;
String src = tcp.src_ip.getHostAddress();
int src_port = tcp.src_port;
String dst = tcp.dst_ip.getHostAddress();
int dst_port = tcp.dst_port;
String data = new String(tcp.data);
System.out.println("" + data + "");
当我使用LAN连接两台机器时,它可以工作,但是当我连接WiFi时无法接收数据包。
任何人都可以建议我,哪里出错?
答案 0 :(得分:1)
我怀疑答案与JPCAP FAQ的引用有关:
问:我可以从WiFi(802.11)网络接口捕获数据包吗?
答案取决于您运行的操作系统和操作系统 您系统的WiFi设备。在Windows上,您可能无法 从某些WiFi设备捕获数据包。 Linux或BSD可能更高 使用WiFi设备支持数据包捕获的概率。
如果您分享精确的适配器类型和Windows版本详细信息,那么您可以在Google discussion group上获得更好的JPcap成功。