Java PcapNetworkInterface在给定IP上返回null
我正在尝试捕获包。在我的探索示例中,我使用我在浏览器中访问的网站的IP。我正在使用PCAP4J捕获包信息 基于上的第3步,我的印象是,我可以简单地拥有一个互联网地址并开始收听它:Java PcapNetworkInterface在给定IP上返回null,java,packet-capture,network-interface,pcap4j,Java,Packet Capture,Network Interface,Pcap4j,我正在尝试捕获包。在我的探索示例中,我使用我在浏览器中访问的网站的IP。我正在使用PCAP4J捕获包信息 基于上的第3步,我的印象是,我可以简单地拥有一个互联网地址并开始收听它: InetAddress addr = InetAddress.getByName("192.168.10.100"); PcapNetworkInterface nif = Pcaps.getDevByAddress(addr); 但是,当我将此ip更改为我的个人示例185.57.10.32时,nif返回null 我
InetAddress addr = InetAddress.getByName("192.168.10.100");
PcapNetworkInterface nif = Pcaps.getDevByAddress(addr);
但是,当我将此ip更改为我的个人示例185.57.10.32时,nif返回null
我已打印出PCA网络接口列表,如下所示:
System.out.println("#### LIST OF DEVS ####");
List<PcapNetworkInterface> devices = Pcaps.findAllDevs();
for (PcapNetworkInterface device : devices) {
System.out.println(device.getName());
}
System.out.println("###############");
返回以下内容:
wlp2s0
任何
瞧
docker0
enp3s0f1
br-df16c72d2764
蓝牙
nflog
NF队列
美国海军陆战队1号
美国海军2号
从这个意义上说,我理解nif返回null,因为它不在列表中。然而,这让我不明白为什么作者给出的例子没有像我预期的那样有效
所以我认为第一个问题是:人们可以通过Pcap4J收听特定的ip吗?在这种情况下,一个网站的ip。或者网站是不可能的,我应该做另一个测试用例吗
谢谢大家! 应该传递给Pcaps的IP地址。getDevByAddress是NIF拥有的地址之一。
您可以使用NIF从任何IP地址捕获数据包。当我使用设备列表中任何设备的地址时,NIF不为空。因此,我觉得我不能简单地听任何IP。例如,如果我使用8.8.8.8作为IP,nif为null,这是预期的吗?是的,这是预期的,因为您没有包含8.8.8.8的nif。传递给Pcaps.getDevByAddress的IP地址在捕获数据包时不会以任何方式使用。好的,明白了,明白了。事实上,如果我也使用tcpdump使用的接口的ip,我确实会得到包。谢谢你的澄清!我会接受答案的!