0

JavaクライアントといくつかのTomcatサーバー(Webサーバー)があります。同じサーバーで実行する必要のある一連の操作があります。私が念頭に置いているのは、同じtcpセッションを使用して、次のチェーンを使用することです:読み取り、書き込み、読み取り、書き込み...-サーバー側で書き込み、読み取り、書き込み、読み取り...-クライアント側で

問題-読み取り後、Tomcatサーバーに書き込みます-次の読み取りで-1またはEOFExceptionが発生します。

クライアントコード:

    java.net.URL u = new URL("http", "127.0.0.1", 8080, "/Dyno/BasicServlet");
    HttpUrlConnection huc = (HttpURLConnection)u.openConnection();
    huc.setRequestMethod("POST");
    huc.setDoOutput(true);
    huc.connect();
    os = huc.getOutputStream();
    byte[] b = info();
    os.write(b)
    os.flush();
    is = huc.getInputStream();
    byte[] b2 = new byte[10];
    is.read(b2);
    byte[] b = info(b2);
    os.write(b)

サーバーコード:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ServletInputStream is = request.getInputStream();
    ServletOutputStream os = response.getOutputStream();
byte[] clientMsg = new byte[10];
is.read(clientMsg);
    serverMsg = respond(clientMsg);
    os.write(serverMsg)
    os.flush();
    is.read(); //Here I get -1

私の理論では、Tomcatがストリームを閉じています。同意しますか?とにかくこれをバイパスするには?

ありがとうございました。

4

1 に答える 1

0

HTTP は要求応答のみです。ただし、WebSocket では、クライアントとサーバー間の全二重通信が可能です。

Apache Tomcat 7 は、WebSocket を暫定的にサポートしています。

于 2013-01-20T00:00:43.910 に答える