HTTP协议----(2)Java程序检测HTTP服务是否打开

 package cn.zhaoql;
 
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.Socket;
 
 public class HttpServiceChecker
 {
     public static void main(String[] args) throws Exception
     {
         boolean flag = isHttpOpen("www.baidu.com", 80);
         System.out.println(flag ? "HTTP服务启动..." : "HTTP服务关闭...");
     }
     /**
      * 判断ip的port端口是否开放了http服务
      */
     public static boolean isHttpOpen(String ip, int port)
     {
         if(isEmpty(ip))
         {
             return false;
         }
         Socket socket = null;        // socket链接
         OutputStream os = null;      // 输出流
         BufferedReader br = null;    // 输入流
         boolean flag = false;        // 是否开启了HTTP服务
         try
         {
             socket = new Socket(ip, port);
             os = socket.getOutputStream();
             br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             // 创建HTTP请求报文信息
             String reqInfo =  "HEAD / HTTP/1.0"
                             + "\r\n"
                             + "Host: " + ip + ":" + port
                             + "\r\n\r\n";
             System.out.println("请求报文 : \r\n" + reqInfo);
             // 发送请求消息
             os.write(reqInfo.getBytes());
             os.flush();
             // 接收响应消息
             String lineStr = null;
             System.out.println("响应报文 : ");
             while((lineStr = br.readLine()) != null)
             {
                 // 读取到了响应信息,表示该ip的port端口提供了HTTP服务
                 System.out.println(lineStr);
                 flag = true;
             }
         } catch (Exception e)
         {
             e.printStackTrace();
         }
         finally
         {
             try
             {
                 if(br != null)
                     br.close();
                 if(os != null)
                     os.close();
                 if(socket != null)
                     socket.close();
             } catch (IOException e)
             {
                 e.printStackTrace();
             }
         }
         return flag;
     }
     
     private static boolean isEmpty(String str)
     {
         if(str == null || str.length() <= 0 || str.trim() == null || str.trim().length() <= 0)
         {
             return true;
         }
         return false;
     }
 }

 就是利用手工发送HTTP请求报文的原理,在程序中使用Socket方式发送请求报文。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值