我正在编写一个程序,它只是测试与远程机器上端口的连接并检查连接是建立还是拒绝,几乎是一个端口扫描器。虽然它似乎适用于 localhost 和某些站点,但由于某种原因,它不适用于大多数 IP 地址,但我的几个同学采用了类似的方法并能够探测这些相同的站点。一些站点,例如 wikipedia.org,只会访问 21 端口然后挂起。谁能看到我的代码有任何明显的问题。提前谢谢。
for(int i = 1; i <= maxPort; i++)
{
boolean found = true;
try
{
String[] hostNameArray = hostName.split(".");
socket = new Socket(hostName, i);
System.out.println("Test");
socket.close();
}
catch(java.net.ConnectException ex)
{
System.out.println("Error" + ex + "\t<"+i+">");
found = false;
}
catch(java.net.UnknownHostException ex)
{
System.out.println("Unknown host");
System.exit(-1);
}
catch(IOException ex)
{
System.out.println("IO Exception");
System.exit(-2);
}
if(found)
{
ports.add(i);
}
}
当我尝试创建套接字时,诸如 google.com 之类的地方将简单地停止(即永远不会打印测试语句),而 wikipedia.org 将在 21 后简单地挂起。再次感谢您的帮助。