2016-10-26 76 views
0

在我的應用程序中,我創建了一個套接字來完成客戶端和服務器之間的通信。有兩種類型的消息傳遞,它們在數據長度方面有所不同。一種消息類型只有一個字節,而另一種消息類型是可變長度的。我試圖使用單個TCP連接來處理這兩種情況,但到目前爲止失敗了。有人可以告訴我這是什麼理想的方法。使用不同端口號的兩個連接會是最好的方法嗎? 請注意,由於外部約束,我的項目中無法使用socket.io。從同一TCP連接發送字節數組和字節

這裏的讀碼我正在使用:

 Socket socket = new Socket(dstAddress, dstPort); 
     InputStream inputStream = socket.getInputStream(); 
     try(ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024)) 
     { 
      byte[] buffer = new byte[1024]; 
      int bytesRead; 
      while((bytesRead = inputStream.read(buffer)) != -1) 
      { 
       byteArrayOutputStream.write(buffer, 0, bytesRead); 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

感謝

+1

您需要在消息之前發送消息長度。可能也是一種消息類型。 – EJP

+0

我在這裏編輯帖子,代碼顯示瞭如何在客戶端讀取數據。所以,如果我理解正確,我應該在相同的消息中發送消息長度和可能的長度,預先?如果是這樣,我該怎麼做? – KTB

+0

您現在發佈的閱讀代碼除了讀取整個輸入直到流結束之外什麼也不做。它不符合你的任何目標。 – EJP

回答

1

你需要設計自己的通信協議,如HTTP例如,但當然要簡單得多。並在兩側實現解碼器/編碼器