簡體   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