所以我四处阅读,显然网络将数据包分解成更小的块或其他东西并单独发送它们,但java不知道应该接收的字节的总大小是多少。我在数据包中添加了一个字节大小前缀,这样它就知道要读取多少
while ( inputStream.available() != -1 )
{
int packetSize = inputStream.readByte() ;
if ( packetSize == -1 )
{
closeConnection();
}
debug( "read bytearray size:" + packetSize );
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte packetBuffer[] = new byte[packetSize];
int byteTrans = 0;
while ( byteTrans < packetSize )
{inputStream.read() );
inputStream.read( packetBuffer , byteTrans , 1 );
byteTrans++;
}
我试着玩读,到目前为止,这就是我开始工作的地方。
我想我记得一个字节最多只能包含和 int 255。我想我应该为那些大字符串发送一个无符号的 short 吗?
我的主要问题是:flash actionscript 3 是否同样如此?如果是这样,我该如何实现类似的东西?
我的想法是在 socketData 的处理程序中,读取缓冲区大小,然后将所有数据保存到类的字节数组缓冲区中。如果缓冲区的大小是接收到的大小,则运行读取方法。所以一般来说,每次调用socketData处理程序时,在java端的while循环中运行代码。
谢谢!