2009-04-24 7 views
-1

read()write()を使用してソケットプログラムを作成しました。 write()を使用して大量のデータを送信したいときはいつでも。私は一度にデータを受け取ることができません。データが2つのセクションに分かれているので、どのように大量のデータを送信できますか? 1回でデータを読み込むことはできますか? Javaソケットプログラムが大量のデータを一度に読み取ることができません

はまた、私は、これは BAPI

+1

これは昨日の質問と重複していますか? http://stackoverflow.com/questions/780373/read-and-write-method-for-large-data-in-socket-communication-does-not-work-reliab – Thilo

+0

多分あなたは答えから試したことを説明することができますあなたは昨日受け取ったので、そこから行くことができます。 –

+0

私は昨日からすべてのアプローチを試みました。 スレッドスリープを1秒間適用しましたが、それはうまく動作しますが、ネットワークの懸念に応じて信頼性があります。 – Deepak

答えて

2

読み出しが()1バイトのみを読み取ることが保証されてwrite()またはread()

感謝の問題であるかどうかを知ることができません、それ以上のものはボーナスです。

これを処理する一般的な方法は、DataOutputStreamとDataInputStreamを使用して、必要な「ブロック」のサイズを送信することです。

public static void write(DataOutput out, byte[] bytes) throws IOException { 
    out.writeInt(bytes.length); 
    out.write(bytes); 
} 

public static byte[] read(DataInput in) throws IOException { 
    int len = in.readInt(); 
    byte[] bytes = new byte[len]; 
    in.readFully(bytes); 
    return bytes; 
} 
+0

実際には、それを読むことさえ保証されていません。ソケットは非ブロックモードにあるかもしれません。 。 –

関連する問題