写入servlet流

时间:2011-10-25 08:17:51

标签: java http stream io

我不确定我想做的事情是否可行,但事实并非如此。这是我的问题:

我正在尝试使用Servlet通过HTTP将信息从客户端传递到服务器。这种通信非常频繁(我传递UI信息,所以每一个鼠标事件),所以我希望尽可能少的开销来避免延迟问题,这就是为什么我不想为每次传输做一个GET调用。 HTTP是一项要求。我正在使用较旧的Tomcat版本(Servlet API 2.4)。我想这有点像Web套接字用例,但我没有任何Web套接字支持。

我尝试的是在客户端打开URL连接,并打开输入流(否则servlet的doGet()永远不会被调用)。我正在将一个用于初始化的参数传递给客户端。

URLConnection uiConnection = url.openConnection();      
uiConnection.setRequestProperty("Authorization", "Basic " + encode("xyz" + ":"
            + "xyz"));
uiConnection.setReadTimeout(0);
uiConnection.setDoOutput(true);
uiConnection.setAllowUserInteraction(true);
DataInputStream is = new DataInputStream(
uiConnection.getInputStream());

当我稍后尝试从此连接中检索输出流时,我收到一个ProtocolException(读取输入后无法写入输出)。

out = new BufferedWriter(new OutputStreamWriter(
uiConnection.getOutputStream()));
out.write(uiUpdate);

在servlet端我做了类似的事情:

DataInputStream is = new DataInputStream(
            request.getInputStream());

我是否完全走错了轨道,或者在没有为每次传输使用新连接的情况下是这样的?

谢谢, 标记

1 个答案:

答案 0 :(得分:0)

我认为关键问题是,你是否还有http流量到这个IP?如果是这样,可能没有任何东西只能用java做。如果没有,则创建一个servlet以侦听端口80,并直接解析传入的数据。

http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html