0

だから私は周りを読んで、どうやらネットワークはパケットを小さなチャンクなどに分割して別々に送信しますが、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++;
            }

私は read をいじってみましたが、これまでのところ、これでうまくいきました。

1 バイトには 255 までの int のみを含めることができることを覚えていると思います。これらの大きな文字列の代わりに unsigned short を送信する必要があると思いますか?

私の主な質問は次のとおりです。同じことがフラッシュアクションスクリプト3にも当てはまりますか? もしそうなら、どうすれば似たようなものを実装できますか?

私が考えているのは、socketData のハンドラーで、バッファー サイズを読み取り、すべてのデータをクラスの bytearray バッファーに保存することです。バッファのサイズが受け取ったサイズの場合、読み取りメソッドを実行します。したがって、一般に、socketData ハンドラーが呼び出されるたびに、Java 側の while ループでコードを実行します。

ありがとう!

4

0 に答える 0