2014-10-04 38 views
0

我正在玩插座並遇到問題。我有一個C#客戶端繼續按這樣的順序發送字節: byte [6] - > byte [30000] - > byte [6] - > byte [30000]; (沒有任何中斷)Java Socket不接收所有字節

Java的socket服務器即時閱讀這些字節如下:

byte[] mainBuffer = new byte[30000]; 
DataInputStream inputStream= new DataInputStream(clientSocket.getInputStream()); 
receivebytes=6; 

    while(true){ 
     numberOfBytesRedFromStream = inputStream.read(mainBuffer, 0, receiveBytes); 
      .... 
       if(receivebytes==6){ 
        receibytes=30000; 
        } 
       else{ 
        receivebyter=6; 
        } 
       } 

但有時我只是不得到充分的30000字節的少。

你能解釋爲什麼這樣嗎? 我真的很感激它。 預先感謝您。

回答

0

有多種原因可能會發生這種情況,發送它們的客戶端可能不是flush() ing,因此不會發送所有內容,也可能是因爲您發送的字節數大於最大幀大小。

看看this更多信息

+0

服務器端:而真正{socketToServer.Send(數字); socketToServer.Send(data,0,30000,SocketFlags.None);} – 2014-10-04 20:37:38

+0

你可以包括一個http://stackoverflow.com/help/mcve請 – Epicblood 2014-10-04 22:18:43

+0

我找到了我需要的一切。謝謝你的幫助 :) – 2014-10-04 23:04:26