java实现简单的HTTP响应

来源:互联网 发布:淘宝店铺装修店标尺寸 编辑:程序博客网 时间:2024/06/05 14:41
package my.httpserver;


import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;


public class Server {
private static final String BLANK = " ";
private static final String CRLF = "\r\n";
private int length = 0;
private ServerSocket server;

public static void main(String[] args) {
new Server().start();
}

public void start() {
try {
server = new ServerSocket(8888);
response();
} catch(BindException e) {
System.out.println("端口已被占用");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void response() {
try {
Socket client =server.accept();
//响应
StringBuilder responseContext =new StringBuilder();
responseContext.append("<html><head><title>HTTP响应示例</title>" +
"</head><body>郝俊杰</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:hjj 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);

System.out.println(responseContext);


//输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
bw.write(response.toString());
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}

}
}
原创粉丝点击