【JAVA网络流之浏览器与服务器模拟】
一、模拟服务器获取浏览器请求http信息
代码:
package p06.TCPTransferImitateServer.p01.ImitateServer; import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 该类模拟服务器,浏览器通过输入http://localhost:9988访问。
* @author kuangdaoyizhimei
*
*/
public class ImitateServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(9988);
Socket socket=ss.accept();
InputStream is=socket.getInputStream();
byte buf[]=new byte[10240];
int length=is.read(buf);
System.out.println(new String(buf,0,length));
PrintWriter pw=new PrintWriter(socket.getOutputStream(),true);
pw.println("我是狂盗一枝梅!"); socket.shutdownOutput();
socket.close();
ss.close();
}
}
运行结果:
1.服务端(得到浏览器请求信息):

2.浏览器端(显示服务端响应的内容):

二、模拟浏览器向服务器发出请求并获取服务器的响应内容。
这里使用的服务器软件:apache
代码:
package p07.TCPTransferImitateBrowser.p01.ImitateBrowser; /**
* 该类的作用是模拟浏览器向服务器请求一个页面,并将html代码显示出来
* 请求信息从之前获取的浏览器请求得到
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; public class ImitateBrowser {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket=new Socket("192.168.209.1",80);
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os,true);
pw.println("GET /myWeb/index.html HTTP/1.1");
pw.println("Host: localhost");
pw.println("Connection: close");//这里写close
pw.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
pw.println("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36");
pw.println("Accept-Encoding: gzip,deflate,sdch");
pw.println("Accept-Language: zh-CN,zh;q=0.8,en;q=0.6");
pw.println();
pw.println();
pw.flush();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String str=null;
System.out.println("响应内容:");
while((str=br.readLine())!=null)
{
System.out.println(str);
}
br.close();
socket.close();
}
}
运行结果:

三、注意事项
两个程序中的请求行和请求实体之间必须有一行空行,否则请求失败,这里使用pw.println();实现空行
【JAVA网络流之浏览器与服务器模拟】的更多相关文章
- java Socket Tcp 浏览器和服务器(二)
package cn.itcast.net.p2.ie_server; import java.io.IOException;import java.io.InputStream;import jav ...
- java Socket Tcp 浏览器和服务器(一)
自定义服务端,使用已有的客户端IE,了解一下客户端给服务端发了什么请求? 发送的请求是: GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 htt ...
- 浏览器与服务器交互原理以及用java模拟浏览器操作v
浏览器应用服务器JavaPHPApache * 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, * 简单的讲,当浏 ...
- Java Web实现使用浏览器从服务器下载文件(后台)
Java Web实现 使用浏览器从服务器下载文件. 下面实现两种情况的下载,需求如下: 需求(一):1.用户在页面填写表单. 2.填写完成后,选择下载,将表单内容发往后台. 3.后台根据内容生产一个文 ...
- JavaWeb学习笔记——开发动态WEB资源(一)Java程序向浏览器输出数据
开发一个动态web资源,即开发一个Java程序向浏览器输出数据,需要完成以下2个步骤: 1.编写一个Java类,实现Servlet接口 开发一个动态web资源必须实现javax.servlet.Ser ...
- [置顶] Asp.Net底层原理(一、浏览器和服务器的交互原理)
…… 一.浏览器和服务器的交互原理 二.写自己的"迷你"Asp.net框架 三.Asp.Net的请求与响应过程 1.在此之前,首先简单的模拟一下我们去请求一个网址的时候,浏览器和服 ...
- 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response>
徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 接上一篇,说到接受了请求,接下来就是解析请求构建Request对象,以及创建Response对象返回. 多有纰漏还请指出.省略 ...
- 浏览器和服务器实现跨域(CORS)判定的原理
前端对Cross-Origin Resource Sharing 问题(CORS,中文又称'跨域')应该很熟悉了.众所周知出于安全的考虑,浏览器有个同源策略,对于不同源的站点之间的相互请求会做限制(跨 ...
- 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
转自:https://blog.csdn.net/tjiyu/article/details/53148174 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服 ...
随机推荐
- ajax 载入html后不能执行其中的js解决方法
事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js. 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁 ...
- mysql 之基本操作
已经在板子内部把所有的环境都搭好了,现在的要求是对Mysql 进行一些基本的操作. 在这之前,记录几个要点以防以后忘记. 一,准备工作. 1. 将usr/share/mysql 目录下的 my-lag ...
- Qt5 程序启动画面图片效果
2333每次打开photoshop开启画面是在酷炫,其实也不难啦. 新建项目名称SplashScreen,基类默认,取消创建界面复选框,完成. 代码如下,图片资源文件自己添加(已上传还未实现动态效果学 ...
- ndk学习13: proc
一.进程相关信息 /proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件 结构如下: 进程相关的信息如下: 部分信息如下 cmdlin ...
- poj 1511(spfa)
---恢复内容开始--- http://poj.org/problem?id=1511 一个spfa类的模板水题. 题意:就是求从1到n个点的来回的所有距离和. 对spfa类的题还是不太熟练,感觉还是 ...
- css实现背景颜色线性渐变
http://www.qttc.net/201304316.html http://www.ruanyifeng.com/blog/2008/05/css_background_image_posit ...
- 【转】mysql的cardinality异常,导致索引不可用
转自:http://ourmysql.com/archives/1343 前段时间,一大早上,就收到报警,警告php-fpm进程的数量超过阈值.最终发现是一条sql没用到索引,导致执行数据库查询慢了, ...
- linux grep 查找字符串
2015年8月27日 12:04:58 在当前文件夹查找 public function abc() grep -re 'public function abc\b' . // 可以不加e, 适合函数 ...
- SQL Server的“错误:9004”
客户的一台现场采集电脑崩溃,无法启动.用PE引导后,将MDF和LDF数据复制出来,往正常的数据库附加时,报如下错误: 处理数据库 'databasename' 的日志时出错.如果可能,请从备份还原.如 ...
- code vs1262 不要把球传我(组合数学) 2012年CCC加拿大高中生信息学奥赛
1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 De ...