server java_Web Server(Java版)

importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;/*** * @Description: //TODO 简单的HTTP服务器, 其实就是接受HTTP请求,并解析请求, * @Author: sunfch

* * @Date: 2019/1/3 16:35 * @Param: * @Return:*/

public classHttpServer {public static voidmain(String[] args) {try{/*监听端口号,只要是8888就能接收到*/ServerSocket ss= new ServerSocket(8888);while (true) {/*实例化客户端,固定套路,通过服务端接受的对象,生成相应的客户端实例*/Socket socket=ss.accept();/*获取客户端输入流,就是请求过来的基本信息:请求头,换行符,请求体*/BufferedReader bd= new BufferedReader(newInputStreamReader(socket.getInputStream()));/*** 接受HTTP请求,并解析数据*/String requestHeader;int contentLength = 0;while ((requestHeader = bd.readLine()) != null && !requestHeader.isEmpty()) {

System.out.println(requestHeader);/*** 获得GET参数*/

if (requestHeader.startsWith("GET")) {int begin = requestHeader.indexOf("/") ;int end = requestHeader.indexOf("HTTP/");

String condition=requestHeader.substring(begin, end);

System.out.println("GET参数是:" +condition);

}/*** 获得POST参数 * 1.获取请求内容长度*/

if (requestHeader.startsWith("Content-Length")) {int begin = requestHeader.indexOf("Content-Lengh:") + "Content-Length:".length();

String postParamterLength= requestHeader.substring(begin+1).trim();

contentLength=Integer.parseInt(postParamterLength);

System.out.println("POST参数长度是:" +Integer.parseInt(postParamterLength));

}

}

StringBuffer sb= newStringBuffer();if (contentLength > 0) {for (int i = 0; i < contentLength; i++) {

sb.append((char) bd.read());

}

System.out.println("POST参数是:" +sb.toString());

}/*发送回执*/PrintWriter pw= newPrintWriter(socket.getOutputStream());

pw.println("HTTP/1.1 200 OK");

pw.println("Content-type:text/html");

pw.println();

pw.println("");

pw.println("

Index");

pw.println("

");

pw.println("

Welcome to J. David's webserver.");

pw.println("

CGI demo1");

pw.println("

");

pw.println("Enter a color: ");

pw.println("

");

pw.println("Enter a number: ");

pw.println("");

pw.println("

");

pw.println("");

pw.println("");

pw.flush();

socket.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值