我不确定我正在尝试做的事情是否可行,也可能不可行。这是我的问题:
我正在尝试使用 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/