简单模拟了一下当服务器遇到请求是,使用java代码做出响应的是情况。
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server_3 {
public static void main(String[] args) {
String CRLF = "rn";
String BLANK = " ";
ServerSocket server = null;
Socket client = null;
InputStream is = null;
try {
server = new ServerSocket(8888);
client = server.accept();
//获取浏览器的请求信息
is =client.getInputStream();
byte[] buf = new byte[20480];
int len=is.read(buf);
System.out.println(new String(buf,0,len));
StringBuilder sb = new StringBuilder();
StringBuilder sbn = new StringBuilder();//响应的文本
sbn.append("<html><head><title>响应结果</title></head>");
sbn.append("<body>登陆成功</body></html>");
//1.拼接响应头
//协议版本 状态码 描述
sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK");
sb.append(CRLF);
sb.append("Content-Type: text/html;charset=utf-8");//内容类型
sb.append(CRLF);
sb.append("Content-Length:").append(sbn.toString().getBytes().length).append(CRLF);
sb.append(CRLF);//换行,代表相应头和相应的正文部分之间的空行
sb.append(sbn);
//通过流输出
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(),"utf-8"));
bw.write(sb.toString());
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
CloseUtil.closeAll(is, client, server);//一个工具类,用于关闭流
}
}
}
以及使用的html文件,大概是这个样子;