java - 写入 servlet 流

标签 java http stream io

我不确定我正在尝试做的事情是否可行,也可能不可行。这是我的问题:

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

我尝试的是在客户端打开一个 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());

我是否完全走错了路,或者如果不为每次传输都使用新连接,是否有可能发生这样的事情?

谢谢, 标记

最佳答案

我认为关键问题是,您是否也有流向该 IP 的 http 流量?如果是这样,您可能无法仅使用 java 来做任何事情。如果没有,则创建一个 servlet 来监听 80 端口,并直接解析传入的数据。

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

关于java - 写入 servlet 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886478/

相关文章:

java - 您可以将 @Autowired 与静态字段一起使用吗?

http - 如何解析带有 `gen_tcp` 的 HTTP 请求?

ruby-on-rails - 使用正则表达式获取链接

algorithm - 找到最大簇的最小值?

c++ - cin 和 cout 对象的生命周期是什么? C++

ubuntu - 无法在 Wowza 流媒体引擎上发布流。服务器创建并立即销毁流

java - 如何使用 jfilechooser 从 java 中的文件名数组中获取多个文件选择的绝对路径

java - Wicket @SpringBean 和 Spring @Autowired 通过构造函数注入(inject)

java - NetBeans Matisse - 从另一个类访问 jframe 组件

xml - 我怎样才能获得与艺术家关联的所有 musicbrainz id?