模拟Web服务器

模拟一个web服务器获取浏览器发来的请求头消息

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

    public static void main(String[] args) throws IOException {

        /*
         * 创建一个服务器为了获取浏览器发送的数据
         */
        System.out.println("服务器端启动....");

        ServerSocket ss = new ServerSocket(9090);

        Socket s = ss.accept();

        System.out.println(s.getInetAddress().getHostAddress()+"....connected");

        //接收浏览器的数据
        InputStream in = s.getInputStream();
        byte[] buf = new byte[1024];
        int len = in.read(buf);
        String str = new String(buf,0,len);
        System.out.println(str);

        //给浏览器一个回馈
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);//自动刷新
        out.println("<font size=‘7‘ color = ‘green‘>欢迎光临,你访问的是XXX的服务器</font>");

        s.close();
        ss.close();

    }

}

在浏览器的地址栏中输入:http://127.0.0.1:9090/  后服务端获取到的请求头消息如下:

GET /myapp/1.jpg HTTP/1.1 //请求行。请求方式 ,请求的资源路径, http协议版本
请求头消息中的属性信息。
Host: 192.168.***.***:9090
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0
Accept-Encoding: gzip, deflate, sdch //封装的压缩方式
Accept-Language: zh-CN,zh;q=0.8
空行
//请求体(用空行分割)

时间: 2024-08-11 09:40:27

模拟Web服务器的相关文章

java模拟web服务器代码

为了更好地理解web服务器(如tomcat)的运行原理,现用java代码模拟了一个web服务器: 1 import java.io.*; 2 import java.net.*; 3 public class MyWebServer 4 { 5 /*模拟web服务器*/ 6 public static void main(String[] args) throws Exception 7 { 8 ServerSocket ss = new ServerSocket(9999);//占用9999端

模拟web服务器产生的日志占满磁盘故障解决方案

生产环境可能你会遇到web服务器产生的log日志文件占满磁盘的现象,下面给出具体的解决方案 安装httpd web服务 [[email protected] ~]# yum install httpd -y 启动 [[email protected] ~]# /etc/init.d/httpd start 测试 [[email protected] ~]# lsof -i :80 COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

公司网络访问web服务器

一.准备工作:在eNsp中模拟公司访问web服务器,在模拟器中准备一台S5700交换机名为SW1,俩台S3700交换机分别名为SW2,SW3.三台PC机分别命名PC1,PC2,PC3.俩台Server,分别模拟web服务器跟dns服务器.一台Client,命名为Client1充当客户端 二.实验环境 设备 端口 连接设备 SW1 GE0/0/1 SW2 SW1 GE0/0/2 SW3 SW1 GE0/0/3 dns SW1 GE0/0/4 web SW2 Ethe0/0/1 SW1 SW2 Et

自己动手模拟开发一个简单的Web服务器

开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的Web服务器来体会一下. 一.请求-处理-响应模型 1.1 基本过程介绍 每一个HTTP请求都会经历三个步凑:请求-处理-响应:每当我们在浏览器中输入一个URL时都会被封装为一个HTTP请求报文发送到Web服务器,而Web服务器则接收并解析HTTP请求报文,然后针对请求进行处理(返回指定的HTML页面

[转] c# 模拟Asp.net页面中的某个按钮的点击,向web服务器发出请求

在没有做题目中所述的内容的时候,感觉这应该是很简单的东西,但是当真正开始做的时候却发现,有很多问题现在在这里写出来,供和我一样水平不高的参考一下. 在写本文之前参照了一下文章 欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212 http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html C#通过webRequest保持在同一Session中Post数据 http://blog.c

java程序模拟浏览器访问Web服务器的处理过程

import java.net.*; import java.io.*; /* * 演示浏览器访问Web服务器的处理过程 */ public class WebServerDemo { public static void main(String[] args)throws IOException{ ServerSocket ss=new ServerSocket(10000); Socket s=ss.accept(); byte[] bytes=new byte[1024]; int len

自己模拟的一个简单的web服务器

首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器是如何工作的 servlet容器是一个复杂的系统.不过,一个servlet容器要为一个servlet的请求提供服务,基本上有三件事要做: 1,创建一个request对象并填充那些有可能被所引用的servlet使用的信息,如参数.头部. cookies.查询字符串. URI 等等.一个 request

Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz 安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar

J2EE(一)——开发简单WEB服务器

一.web开发介绍 网页连接过程(B/S):客户端使用浏览器,发送http请求到web服务器上,服务器进行回应.Browser/Server http请求内容: GET/HTTP/1.1 说明是get请求,使用的是http1.1的协议. Accept:image/gif..... 说明我能够接收的图片格式有如下... Accept-Language:zh-cn. 说明我能接收的语言是中文. User-Agent:xxx 说明我能支持的浏览器有xxx. Host:www.baidu.com 说明我