手写服务器httpserver_准备_http协议_http工具JAVA197-198

来源:http://www.bjsxt.com/
一、S02E197_01手写服务器httpserver_准备_http协议

http协议

HTTP协议简介

HTTP协议规定

请求方法

请求头

请求正文

HTTP响应格式

package com.test.server;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
/**
 * 创建服务器,并启动
 * 1、请求
 * 2、响应
 */
public class ServerForResponse {
    private ServerSocket server;
    private static final String CRLF = "\r\n";
    private static final String BLANK = " ";

    public static void main(String[] args) {
        ServerForResponse server = new ServerForResponse();
        server.start();
    }
    /**
     * 启动方法
     */
    public void start(){        
        try {
            server = new ServerSocket(8888);
            this.receive();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 接收客户端
     */
    private void receive(){
        try {
            Socket client =server.accept();
            StringBuilder sb =new StringBuilder();

            byte[] date = new byte[20480];
            int len = client.getInputStream().read(date);

            //接收客户端的请求信息
            String requestInfo = new String(date,0,len).trim();     
            System.out.println(requestInfo);

            //响应
            StringBuilder responseContext = new StringBuilder();
            responseContext.append("<html><head><title>HTTP响应示例</title>" + 
                    "</head><body>Hello World!</body></html>");

            StringBuilder response = new StringBuilder();
            //1)HTTP协议版本、状态代码、描述
            response.append("HTTP/1.1").append(BLANK).append("200").append(BLANK).append("OK").append(CRLF);
            //2)响应头(Response Head)
            response.append("Server:test Server/0.0.1").append(CRLF);
            response.append("Date:").append(new Date()).append(CRLF);
            response.append("Content-type:text/html;charset=GBK").append(CRLF);
            //正文长度:字节长度
            response.append("Content-Length:").append(responseContext.toString().getBytes().length).append(CRLF);
            //3)正文之前
            response.append(CRLF);
            //4)正文
            response.append(responseContext);

            //输出流
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
            bw.write(response.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            //e.printStackTrace();
        }
    }
    /**
     * 停止服务器
     */
    public void stop(){

    }
}

二、S02E198_01手写服务器httpserver_准备_http工具

HTTP响应分析

这里写图片描述

这里写图片描述

这里写图片描述

HTTP工具:HttpWatch——捕捉信息,便于查看请求响应内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值