首页 > 代码库 > 模拟Web服务器

模拟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
空行
//请求体(用空行分割)

模拟Web服务器