java webserver-获取请求协议和返回响应协议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java webserver-获取请求协议和返回响应协议相关的知识,希望对你有一定的参考价值。
使用ServerSocket建立与浏览器的连接,获取请求协议public class Server
private ServerSocket serverSocket;
public static void main(String[]args)
Server server=new Server();
server.start();
//启动服务
public void start()
try
serverSocket=new ServerSocket(8888);
receive();
catch (IOException e)
e.printStackTrace();
System.out.println("服务器启动失败");
//停止服务
public void stop()
//接受连接处理
public void receive()
try
Socket client=serverSocket.accept();
System.out.println("一个客户端建立了连接");
//获取请求协议
InputStream is =client.getInputStream();
byte[] datas=new byte[1024*1024];
int len=is.read(datas); //读取完毕,并返回长度
String requestInfo =new String(datas,0,len);
System.out.println(requestInfo);
catch (IOException e)
e.printStackTrace();
System.out.println("客户端错误");
返回响应协议:
public class Server02
private ServerSocket serverSocket;
public static void main(String[]args)
Server02 server=new Server02();
server.start();
//启动服务
public void start()
try
serverSocket=new ServerSocket(8888);
receive();
catch (IOException e)
e.printStackTrace();
System.out.println("服务器启动失败");
//停止服务
public void stop()
//接受连接处理
public void receive()
try
Socket client=serverSocket.accept();
System.out.println("一个客户端建立了连接");
//获取请求协议
InputStream is =client.getInputStream();
byte[] datas=new byte[1024*1024];
int len=is.read(datas); //读取完毕,并返回长度
String requestInfo =new String(datas,0,len);
System.out.println(requestInfo);
StringBuilder content =new StringBuilder();
content.append("<html>");
content.append("<head>");
content.append("<title>");
content.append("服务器响应成功");
content.append("</title>");
content.append("</head>");
content.append("<body>");
content.append("终于回来了");
content.append("</body>");
content.append("</html>");
int size=content.toString().getBytes().length; //必须获取字节长度
StringBuilder responseInfo =new StringBuilder();
String blank =" ";
String CRLF="\r\n";
//拼接响应行
responseInfo.append("HTTP/1.1").append(blank);
responseInfo.append(200).append(blank);
responseInfo.append("OK").append(CRLF);
//返回
//1、响应行:HTTP/1.1 200 OK
//2、响应头(最后一行存在空行):
/*
Date:Mon,31Dec209904:25:57GMT
Server:shsxt Server/0.0.1;charset=GBK 服务器内容
Content-type:text/html 内容类型
Content-length:39725426 内容长度
*/
//拼接响应头
responseInfo.append("Date:").append(new Date()).append(CRLF);
responseInfo.append("Server:").append("shsxt Server/0.0.1;charset=GBK").append(CRLF);
responseInfo.append("Content-type:text/html").append(CRLF);
responseInfo.append("Content-length:").append(size).append(CRLF);
responseInfo.append(CRLF); //响应头最后一行存在空行
//3、 正文
responseInfo.append(content.toString());
//写出到客户端
BufferedWriter bw =new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
bw.write(responseInfo.toString());
bw.flush();
catch (IOException e)
e.printStackTrace();
System.out.println("客户端错误");
以上是关于java webserver-获取请求协议和返回响应协议的主要内容,如果未能解决你的问题,请参考以下文章