ソケット接続を介して 2 つの異なるパッケージでクライアントからサーバーにジョブ (整数配列) を送信する際に問題が発生しています。アイデアはありますか?
私の質問が十分に明確でない場合は、さらに説明できます。
ソケット接続を介して 2 つの異なるパッケージでクライアントからサーバーにジョブ (整数配列) を送信する際に問題が発生しています。アイデアはありますか?
私の質問が十分に明確でない場合は、さらに説明できます。
あなたのタイトルの質問に答えるために、私はSocketOutputStream
aBufferedOutputStream
で aをラップしDataOutputStream
、後者のwriteInt()
方法を繰り返し使用します。またはObjectOutputStream
、代わりに を使用しDataOutputStream
て、配列をシリアル化することもできます: objOutStream.writeObject(theArray)
。反対側で再度読み込むにはSocketInputStream
、(1) a でラップして繰り返しDataInputStream
使用するreadInt()
か、(2) aObjectInputStream
で を使用しますreadObject()
。
(他の言語と相互運用する必要がない場合は、Object*Stream
より簡単です)
配列として送信する必要がありますか?プロセス全体が複雑になります。コレクションやある種のリストにラップしてみませんか? すなわち:
ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(integerCollection);
ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();
リンクを介してこのデータを送信するために使用しているプロトコルは何ですか? 出力ストリームにシリアル化できるオブジェクトで配列をラップできます。
TCP:この場合、物事は非常に単純なはずです。トランスポート層は、オブジェクトを断片化し、リンクの反対側で正しく処理します。
UDP:少し複雑になることがあります。シリアル化しようとしているオブジェクトが UDP バッファーよりも大きい場合 (バイト単位で)、データを取得できない可能性があります。この状況では、デフォルトの UDP バッファー サイズよりも小さいチャンクでデータを送信できます。
よろしく、
使用して
ArrayList a=new ArrayList(n) //n represents size
また
List a=new List()
サーバーに送信できます