繁体   English   中英

无法在WiFi网络中使用jpcap接收数据包

[英]Unable to receive packet using jpcap in WiFi network

我想在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 + "");

当我用局域网连接两台计算机时,它可以工作,但是当我用WiFi连接时,却无法接收数据包。

谁能建议我,怎么了?

我怀疑答案与JPCAP FAQ中的这句话有关:

问:我可以从WiFi(802.11)网络接口捕获数据包吗?

答案取决于您正在运行的操作系统以及系统具有的WiFi设备。 在Windows上,您可能无法从某些WiFi设备捕获数据包。 Linux或BSD可能更有可能支持使用WiFi设备捕获数据包。

如果您共享精确的适配器类型和Windows版本详细信息,则可能会在JPcap的Google 讨论组上取得更大的成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM