Java网络编程从入门到精通(22):实现HTTP模拟器[Java编程]
本文“Java网络编程从入门到精通(22):实现HTTP模拟器[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在谈论HTTP协议的具体恳求和呼应头字段之前,让我们先来操纵从前所学的知识来实现一个HTTP模拟器.所谓HTTP模拟器就是可以在用户输入HTTP的恳求消息后,由这个模拟器将HTTP恳求发送给呼应的服务器,再接纳服务器的呼应消息.这个HTTP模拟器有几下特点:
1.可以手工输入HTTP恳求,并向服务器发送.
2.接纳服务器的呼应消息.
3.消息头和实体内容分段显示,也就是说,并非象Telnet等客户端一样将HTTP响
应消息全部显示,而是先显示消息头,然后由用户决意能否显示实体内容.
4.集合发送恳求.这个HTTP模拟器和Telnet差别的是,并非一开始就衔接服务器,
而是将域名、端口以及HTTP恳求消息都输完后,才衔接服务器,并将这些恳求发送给服务器.这样做的可以预防服务器提早关闭网络衔接的现象.
5.可以循环做上述的操作.
从以上的描写看,要实现这个HTTP模拟器需求以下五步:
1.成立一个大循环,在循环内部是一个恳求/呼应对.这样便可以向服务器发送多次恳求/呼应以了.下面的四步都是被包含在循环内部的.
2.从掌握台读取域名和端口,这个功效可以由readHostAndPort(...)来完成.
3.从掌握台读取HTTP恳求消息,这个功效由readHttpRequest(...)来完成.
4.向服务器发送HTTP恳求消息,这个功效由sendHttpRequest()来完成.
5.读取服务器回送的HTTP呼应消息,这个功效由readHttpResponse(...)来完成.
下面我们就来渐渐实现这五步:
1、成立一个大循环
在成立这个循环之前,先成立一此中叫HttpSimulator的类,并在这个类中定义一个run办法用来运行这个程序.实现代码以下:
001 package http;
002
003 import java.net.*;
004 import java.io.*;
005
006 public class HttpSimulator
007 {
008 private Socket socket;
009 private int port = 80;
010 private String host = "localhost";
011 private String request = ""; // HTTP恳求消息
012 private boolean isPost, isHead;
013
014 public void run() throws Exception
015 {
016 BufferedReader reader = new BufferedReader(new InputStreamReader(
017 System.in));
018 while (true) // 开始大循环
019 {
020 try
021 {
022 if (!readHostAndPort(reader))
023 break;
024 readHttpRequest(reader);
025 sendHttpRequest();
026 readHttpResponse(reader);
027 }
028 catch (Exception e)
029 {
030 System.out.println("err:" + e.getMessage());
031 }
032 }
033 }
034 public static void main(String[] args) throws Exception
035 {
036 new HttpSimulator().run();
037 }
038 }
从上面的代码可以看出,第022、024、025和026辨别调用了上述的四个办法.这些办法的具体实现将在背面谈论.上面的代码除了调用这四个核心办法外,还做了一些预备工作.在008至012行定义了一些今后要用到的变量.在016和017行利用掌握台的输入流成立了BufferedReader对象,通过这个对象,可以直接从掌握台读取字符串,而不是一个个地字节.
以上是“Java网络编程从入门到精通(22):实现HTTP模拟器[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |