我不确定我想做的是否可能,它可能不是。我的问题是:
我试图使用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());
当我稍后尝试从此连接检索输出流时,我得到一个协议异常(读取输入后不能写入输出)。
out = new BufferedWriter(new OutputStreamWriter(
uiConnection.getOutputStream()));
out.write(uiUpdate);
在servlet端,我做了这样的事情:
DataInputStream is = new DataInputStream(
request.getInputStream());
是我完全走错了轨道,还是这样的事情不需要每次传输都使用新的连接?
谢谢,div标记
我认为关键问题是,你是否也有http流量到这个IP?如果是这样,那么仅使用java可能无法完成任何任务。如果没有,那么创建一个servlet来监听端口80,并直接解析传入的数据。
http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html