Java教程

实用Java代码:查看TCP端口是否可用

本文主要是介绍实用Java代码:查看TCP端口是否可用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

以下实例演示了如何检测端口是否已经使用: 实例 import java . net .*;

import java . io .*;

public class Main {

public   static   void   main ( String [ ]   args )   { 

   Socket   Skt ;

   String   host  =  " localhost " ;

   if   ( args . length  >  0 )   { 

      host  =  args [ 0 ] ;

   } 

   for   ( int   i  =  0 ;  i  <  1024 ;  i ++ )   { 

      try   { 

         System . out . println ( " 查看  " +  i ) ;

         Skt  =  new   Socket ( host ,  i ) ;

         System . out . println ( " 端口  "  +  i  +  "  已被使用 " ) ;

      } 

      catch   ( UnknownHostException   e )   { 

         System . out . println ( " Exception occured " +  e ) ;

         break ;

      } 

      catch   ( IOException   e )   { 

      } 

   } 

}

}
以上代码运行输出结果为:

……

查看 17

查看 18

查看 19

查看 20

查看 21

端口 21 已被使用

查看 22

查看 23

查看 24

……

 也可以指定主机的端口:               Main.java 文件 import   java . io . IOException ;

import java . net . InetSocketAddress ;

import java . net . Socket ;

import java . net . SocketAddress ;

import java . net . SocketTimeoutException ;

       public   class   Main   { 



 public   static   void   main ( String [ ]   args )   { 

     //  检测本地 80 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " localhost " ,  80 ) ) ;



     //  检测本地 8080 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " localhost " ,  8080 ) ) ;



     //  检测本地 8081 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " localhost " ,  8081 ) ) ;



     //  检测 runoob.com 的 80 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " runoob.com " ,  80 ) ) ;



      //  检测 runoob.com 的 443 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " runoob.com " ,  443 ) ) ;



     //  检测 runoob.com 的 81 端口  

     log ( isSocketAliveUitlitybyCrunchify ( " runoob.com " ,  81 ) ) ;

 } 



 /* *

 * 判断主机端口

 * 

 *  @param  hostName

 *  @param  port

 *  @return  boolean - true/false

  */ 

 public   static   boolean   isSocketAliveUitlitybyCrunchify ( String   hostName ,  int   port )   { 

     boolean   isAlive  =  false ;



     //  创建一个套接字  

     SocketAddress   socketAddress  =  new   InetSocketAddress ( hostName ,  port ) ;

     Socket   socket  =  new   Socket ( ) ;



     //  超时设置,单位毫秒  

     int   timeout  =  2000 ;



     log ( " hostName:  "  +  hostName  +  " , port:  "  +  port ) ;

     try   { 

         socket . connect ( socketAddress ,  timeout ) ;

         socket . close ( ) ;

         isAlive  =  true ;



     }   catch   ( SocketTimeoutException   exception )   { 

         System . out . println ( " SocketTimeoutException  "  +  hostName  +  " : "  +  port  +  " .  "  +  exception . getMessage ( ) ) ;

     }   catch   ( IOException   exception )   { 

         System . out . println ( 

                 " IOException - Unable to connect to  "  +  hostName  +  " : "  +  port  +  " .  "  +  exception . getMessage ( ) ) ;

     } 

     return   isAlive ;

 } 



 private   static   void   log ( String   string )   { 

     System . out . println ( string ) ;

 } 



 private   static   void   log ( boolean   isAlive )   { 

     System . out . println ( " 是否真正在使用:  "  +  isAlive  +  "

" ) ;

 }

}
以上代码运行输出结果为:

hostName: localhost, port: 80

IOException - Unable to connect to localhost:80. Connection refused

是否真正在使用: true

hostName: localhost, port: 8080

IOException - Unable to connect to localhost:8080. Connection refused

是否真正在使用: false

hostName: localhost, port: 8081

IOException - Unable to connect to localhost:8081. Connection refused

是否真正在使用: false

hostName: runoob.com, port: 80

是否真正在使用: true

hostName: runoob.com, port: 443

是否真正在使用: true

hostName: runoob.com, port: 81

SocketTimeoutException runoob.com:81. connect timed out

是否真正在使用: false

这篇关于实用Java代码:查看TCP端口是否可用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!