http协议:模拟浏览器、服务器
来源:互联网 发布:图灵机原理 知乎 编辑:程序博客网 时间:2024/06/01 20:25
浏览器(可以访问真正的服务器)::
package com.demo.tcp;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;//建立客户端,发送和浏览器相同的信息即可,服务器为本地Tomcatpublic class TzBrowser09 {public static void main(String[] args) {try {//建立客户端Socket s = new Socket("127.0.0.1", 8080);//发送http消息PrintWriter pw = new PrintWriter(s.getOutputStream() , true);pw.println("GET /it/1.html HTTP/1.1");//请求行必须发,Tomcat webapps下有it文件夹,内有1.htmlpw.println("Accept-Language: zh-CN");pw.println("Host: 127.0.0.1:8080");pw.println("Connection: close");//http1.1,需要手动断开,http1.0不需要pw.println();//空行//接收Tomcat反馈信息,简单演示,实际开发不适应InputStream is = s.getInputStream();byte [] buf = new byte[1024];int len = is.read(buf);System.out.println(new String(buf,0,len));} catch (IOException e) {e.printStackTrace();}}}服务器(可以通过真正的浏览器):
package com.demo.tcp;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/* * 1.服务器介绍: * 技术:Socket(端点、端口,参加网络编程之前博文) * IO技术 * 多线程技术 * * ————>客户端和服务端通过http协议通讯; * * 2.Http协议: * 简介:应用层协议,负责定义超文本(超出文本范畴)规范 * 内容: * 通过自定义服务端打印信息即可了解见[2-1] * * 结果:(Http协议请求消息头) * 第一部分,请求行 :请求方式 /Web资源路径 Http协议/版本 * GET / HTTP/1.1 第二部分,请求属性信息(键值对,键不能修改)Host: 127.0.0.1:9090Upgrade-Insecure-Requests: 1Connection: keep-aliveUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,* /*;q=0.8本浏览器支持文件* /*表示其它也支持(直接下载)Accept-Encoding: gzip, deflate, sdch封装形式:为了提高访问速率,可以采用压缩机制,此内容告诉服务器压缩网页的格式Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4第三部分,请求体:自定义信息(http协议规定,请求属性信息和请求体信息必须有一个空行): * * * * 3.Http版本(现在只有1.0和1.1):见图片 * * 例子:现在客户端访问服务器的1.html,1.html中有4.jpg * http1.0:建立连接——>请求1.html网页——>服务器返回1.html——>连接断开——>发现1.html中有4.jpg * 再次建立连接——>请求4.jpg——>服务器返回4.jpg——>连接断开 * * http1.1:建立连接——>请求1.html网页——>服务器返回1.html——>发现1.html中有4.jpg * ——>请求4.jpg——>服务器返回4.jpg ——>连接断开 * * http1.0:一次连接,一次请求;当页面资源过多,访问极慢(因为建立连接需要的时间很长) * http1.1:一次连接,多次请求; * * ——>每请求一个资源发送一次请求(打开图片多的网页时间慢:请求的次数多) * * 4.模拟浏览器,见TzBrowser09.java: * 引入:通过2得知浏览器发送数据的格式,如果我们发送同样的数据,就可以模拟浏览器了 * * * */public class TzServer09 {public static void main(String[] args) {getHttp();//[2-1]}private static void getHttp() {try {ServerSocket ss = new ServerSocket(9090);Socket s = ss.accept();System.out.println("connected");InputStream is = s.getInputStream();byte[]buf = new byte[1024];int len = 0;while((len = is.read(buf)) != -1){System.out.println(new String(buf , 0 , len));}PrintWriter pw = new PrintWriter(s.getOutputStream() , true);//反馈信息pw.println("hello");s.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}
0 0
- http协议:模拟浏览器、服务器
- Http协议下的浏览器与服务器的交互
- java 采用socket模拟HTTP协议发送文件到服务器
- 深入理解HTTP协议(转) 浏览器和服务器如何通信(HTTP协议)
- 深入理解HTTP协议(转) 浏览器和服务器如何通信(HTTP协议)
- 深入理解HTTP协议(转) 浏览器和服务器如何通信(HTTP协议)
- Socket模拟Http协议
- 模拟Http协议
- c++模拟http协议
- nio 模拟http服务器
- Tomcat服务器&http协议
- HTTP协议实践篇--浏览器缓存总结、利用Fiddler和apache模拟
- HTTP协议实践篇--浏览器缓存总结、利用Fiddler和apache模拟
- 浏览器缓存和HTTP协议
- HTTP协议--浏览器的实现
- HTTP协议模拟登录网站
- php模拟HTTP协议请求
- 模拟发送http协议工具
- STL源码剖析之重载操作符
- CI框架入门示例之数据库取数据完整实现方法
- SqlServer事务语法及使用方法
- D3D11教程二十三之Fire(摇动的火)
- ci框架数据库操作快查
- http协议:模拟浏览器、服务器
- 爬虫编码解决1
- 第八周-OJ-B分数序列求和
- Java四种线程池的使用
- 第八周课后练习——换分币
- excel导入与导出(markdown版本)
- linux网络编程之socket(三):最简单的回射客户/服务器程序、time_wait 状态
- linux下安装spss
- 数据结构-栈--结构体实现