我正在编写一个程序,它只测试与远程机器上端口的连接,并检查连接是否已建立或被拒绝,几乎是一个端口扫描程序。虽然它似乎适用于localhost和一些网站,但由于某些原因它不适用于大多数IP地址,当我的几个同学遵循类似的方法并能够探测这些相同的网站时。有些网站,例如wikipedia.org,只能访问端口21,然后挂起。任何人都可以看到我的代码有任何明显问题。 Thansk提前。
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之后挂起。再次感谢您的帮助。