我有一个关于端口扫描的任务。我正在扫描 Java 中某些 IP 地址的 UDP 端口。在我的程序中(假设一切正常)我只能找到一个开放的 UDP 端口。另一方面,通过“nmap”进行端口扫描,我得到 4 个开放的 UDP 端口。有人能告诉我为什么我不能通过 Java 代码找到多个端口吗?顺便说一句,我可以在我的代码中找到真正的开放端口。
int startPortRange=1;
int stopPortRange=1024;
InetAddress address = InetAddress.getByName("bigblackbox.cs.binghamton.edu");
int counter=0;
for(int i=startPortRange; i <=stopPortRange; i++)
{
counter++;
try{
byte [] bytes = new byte[128];
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.setSoTimeout(100);
ds.connect(address, i);
ds.send(dp);
ds.isConnected();
dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
ds.close();
System.out.println("open");
System.out.println(counter);
}
catch(InterruptedIOException e){
//System.out.println("closed");
}
catch(IOException e){
//System.out.println("closed");
}
}
上面代码的输出是 135 open
当我使用 nmap 在命令行中进行相同的操作时,我会得到更多的开放端口。我无法上传图片,因为我是新用户。谢谢