2013-01-19 47 views
0

我有一個java客戶端和一些Tomcat服務器 - Web服務器。我必須在同一臺服務器上執行一系列操作。 我想到的是使用相同的TCP會話,使用以下鏈: 讀,寫,讀,寫...在服務器端 寫,讀,寫,讀...在客戶端Apache Tomcat - 來回流

問題 - 讀取之後,在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) 

Server代碼:

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正在關閉流。 你同意嗎? 無論如何要繞過這個?

謝謝。

+0

我認爲一旦你刷新了響應,請求就無效了。 – Stefan

+0

servlets獨有?來回在插座上工作。 – user967710

+0

沒有它的http問題:請求 - >響應 - >完成。請求 - >響應 - >完成。你究竟想要歸檔什麼? – Stefan

回答

0

HTTP僅爲請求響應。但是WebSocket允許客戶端和服務器之間的全雙工通信。

Apache Tomcat 7初步支持WebSocket。