ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-05-04 20:03:21  阅读:194  来源: 互联网

标签:Java runoob hostName 端口 TCP com port localhost


以下实例演示了如何检测端口是否已经使用: 实例 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,runoob,hostName,端口,TCP,com,port,localhost
来源: https://blog.51cto.com/sunweiqin/2752679

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有