web浏览器提交请求后,服务器端收到请求,但是服务器端一直阻塞,使用数据流一直卡着,麻烦看看原因
package com.bzsxt.server;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import com.bzsxt.chat.CloseUtil;
/*
* #通过web页面提交数据时候,提交数据没有换行标识,所以用缓冲流读取不到换行.
* */
public class Server3 {
public static void main(String[] args) {
ServerSocket server = null;
Socket socket = null;
BufferedReader bReader = null;
BufferedWriter bWriter = null;
String CRLF="\r\n";//换行
String BLANK=" ";//空格
try {
server = new ServerSocket(8080);
System.out.println("服务端开启");
socket = server.accept();
byte [] bs = new byte [20480];
DataInputStream dataInputStream= new DataInputStream(socket.getInputStream());
int len = -1;
while ((len=dataInputStream.read(bs, 0, bs.length))!=-1) {
System.out.println(new String(bs, 0, len, "utf-8"));
}
System.out.println("game over -----------");
/**对Web浏览器的请求作出响应*/
StringBuilder sb=new StringBuilder();
StringBuilder sbContent=new StringBuilder();//响应的文本
sbContent.append("<html><head><title>响应结果</title></head>");
sbContent.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(sbContent.toString().getBytes().length).append(CRLF);
sb.append(CRLF);//换行,代表响应头与响应的正文部门之间的空行
sb.append(sbContent);
//通过流输出
bWriter=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"utf-8"));
bWriter.write(sb.toString());
bWriter.flush();
bWriter.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
CloseUtil.close(bReader, socket, server);
}
}
}