>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22342 个阅读者 刷新本主题
 * 贴子主题:  Java入门实用代码:查看端口是否已使用 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-21 19:01:26     消息  查看  搜索  好友  邮件  复制  引用

  

Java 实例 - 查看端口是否已使用

以下实例演示了如何检测端口是否已经使用:            

实例

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


程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-01-26 19:12:09 重新编辑]
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=1568

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员