1

ソケットを介してバイト配列を送信し、DataInputStreamを介して受信しています。バイト配列のサイズがわからないので、確認する方法がありません。私はこれをやってみました:

byte[] content = new byte[ARRAY_SIZE]; 
int something; 

while((something = inFromStream.read()) > 0)  
    output.write(something); 

ただし、これは、バイト配列のサイズを知る必要があることを意味します。巨大な数値を入力するだけでは不十分です(ストリームから受信したバイト配列は100、場合によっては5000000000になる可能性があるため)。これにどのように対処しますか(できれば標準のJava API /ライブラリを使用)?

4

2 に答える 2

6

byte[]あなたは部分的に賢く送ることができますOutputStream

byte[] buffer = new byte[1024 /* or some other number */];
int numRead;

while((numRead = inputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, numRead);
}
于 2012-07-21T19:54:31.540 に答える
-3

回避策 - コードサンプルなしのロジックのみ

getSizeOfInput int countTokens (){

readInput tokenizeInput countTokens

countTokens を返します }

countTokens のサイズの配列を作成します

しかし、全体として-リンクを見て、 バイトのArrayListを作成してください

于 2012-07-21T19:58:07.937 に答える