JAVA Socket-监测远程主机的某个端口是否被占用

时间:2022-01-14 15:23:55

虽然没考虑到别的网络因素,但是至少是个可行的方法,希望大家能给些好的思路,不甚感激。

这个方法是这样的,java.net.Socket类有个构造函数:

1 public Socket(String host, int port) throws UnKnownHostException,IOException

在这个构造函数中,host参数只是用String表示的主机名。如果域名服务器无法解析这个主机名或者域名服务器没有运行,此构造函数会抛出一个UnKnownHostException异常。

如果出于其他原因无法打开socket,此构造函数将抛出一个IOException异常。

连接失败的原因很多:

1.尝试到达的主机可能不接受连接

2.拨号Internet可能出现故障

。。。

由于这个构造函数不只是创建socket对象,还会尝试连接远程主机socket,所以可以用这个对象确定某个端口的连接是否是允许的。

 

try{
    Socket socket = new Socket(host,i); 
//如果能够连接到这个端口,说明在这个host下的这个端口有ServerSocket在提供服务,说明该端口已经被启用了
   socket.close(); }
catch(UnknownHostException ex){ System.println("无法连接主机"); }catch(IOException ex){ //... }