java webserver-获取请求协议和返回响应协议
发布时间:2020-12-15 07:51:59 所属栏目:Java 来源:网络整理
导读:使用ServerSocket建立与浏览器的连接,获取请求协议 public class Server { private ServerSocket serverSocket; public static void main(String[]args) { Server server=new Server(); server.start(); } //启动服务 public void start() { try { serverSo
使用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,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,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="rn"; //拼接响应行 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("客户端错误"); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |