package com.tomcat.main;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;import com.tomcat.pojo.Request;
import com.tomcat.pojo.Response;public class HttpServer {
private ServerSocket serverSocket;
public HttpServer() throws Exception{
serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("127.0.0.1", 8080));
}
public void await() throws Exception{
while(true){
Socket socket = serverSocket.accept();
System.out.println(socket.getPort());
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
Request request = new Request(inputStream);
request.parseInputStream();
}
}
public static void main(String[] args) throws Exception{
HttpServer httpServer = new HttpServer();
httpServer.await();
}
}
package com.tomcat.pojo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class Request {
private InputStream inputStream;
private String context; public Request(InputStream inputStream){
this.inputStream =inputStream;
context = new String();
}
public void parseInputStream() throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
int c = -1;
while((c = reader.read())!=-1){
builder.append((char)c);
}
System.out.println(builder.toString());
}
}
上面是代码,为什么request类中的parseInputStream中的System.out.println(builder.toString());
没有执行,没有报错,问题出在哪里socket
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;import com.tomcat.pojo.Request;
import com.tomcat.pojo.Response;public class HttpServer {
private ServerSocket serverSocket;
public HttpServer() throws Exception{
serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("127.0.0.1", 8080));
}
public void await() throws Exception{
while(true){
Socket socket = serverSocket.accept();
System.out.println(socket.getPort());
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
Request request = new Request(inputStream);
request.parseInputStream();
}
}
public static void main(String[] args) throws Exception{
HttpServer httpServer = new HttpServer();
httpServer.await();
}
}
package com.tomcat.pojo;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class Request {
private InputStream inputStream;
private String context; public Request(InputStream inputStream){
this.inputStream =inputStream;
context = new String();
}
public void parseInputStream() throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
int c = -1;
while((c = reader.read())!=-1){
builder.append((char)c);
}
System.out.println(builder.toString());
}
}
上面是代码,为什么request类中的parseInputStream中的System.out.println(builder.toString());
没有执行,没有报错,问题出在哪里socket
解决方案 »
- Action中获取cookie的过期时间
- 一个表由2个符合主键组成,比如id1,id2.其中id1是自增长的,hibernate的annotation怎么配置?
- SSH的诡异的空指针异常问题,会ssh的都知道
- 26了,还有希望么?
- 初学hibernate遇到问题,求大神指点。
- 麻烦好心人上传jxl.jar,本人急需用
- tomcat中,web.xml配置filter出错
- 这段时间学JAAS有所感
- 把它改好后,能不能不用重新部署(每次重新部署很累的:(),直接在已部署好的.ear中修改某些东西就能运行了,如果可以的话该改写什么呢
- Maven 集成Tomcat7插件启动不了
- SSH 项目图标上有红叉 文件没错 一开始能运行 突然就就不行了
- 请教:页面上使用new ActiveXObject ,静态html页面上时没错,单把页面放到项目里面就无效了。
在这句话的前后分别打印句话,是不是这里没有客户端连接而阻塞了?
builder.append((char)c);
} 这句有问题,这个循环里面存在阻塞。reader这个输入流永远也不会结束,只有当服务器回复了客户端的请求时,这个流才有可能结束。如果你仅仅是想输出请求头的内容 改成while((c = reader.read())!=-1){
System.out.pritnln((char)c);}应该就可以了。
Socket socket = serverSocket.accept(); 会一直在这阻塞等待,况且你那个输出想打印出数据 也必须要客户端说一句话吧
不是这个问题,是通过浏览器发送的http请求,有客户端的连接
首先这个是没问题的,reader.read()本身就是阻塞的,当然会止步与循环