为什么我读取浏览器客户端发送的请求时会陷入死循环??难道不能这样读取吗??
源代码如下:只是想测试从服务端获取浏览器的请求并显示出来的简单代码:
public class Server {
ServerSocket server;
public static void main(String[] args) {
Server s=new Server();
s.start();
}
/**
* 启动方法
*/
public void start(){
try {
server=new ServerSocket(8088);
receive();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
/**
* 接收客户端 的信息
*/
private void receive(){
try {
Socket socket=server.accept();
String msg=null;
InputStream is=socket.getInputStream();
int len=0;
byte[] data=new byte[20480];
while(-1!=(len=is.read(data))){
msg=new String(data, 0,len);
if(msg.endsWith("\r\n\r\n")){
//如果不手动判断的话就会陷入死循环,最后程序都不知道执行到哪(用debug调试的时候发现的)
//如果是GET的请求,可以用这个判断,POST方式的话,不能这样
//最后是以这个结束的,说明已经读取完毕跳出这个循环
break;
}
System.out.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
来大神请教一下=-=