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

原文地址:https://www.cnblogs.com/qjlbky/p/5932684.html