2014-10-04 34 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