ソケット接続を介して 2 つの異なるパッケージでクライアントからサーバーにジョブ (整数配列) を送信する際に問題が発生しています。アイデアはありますか?
私の質問が十分に明確でない場合は、さらに説明できます。
ソケット接続を介して 2 つの異なるパッケージでクライアントからサーバーにジョブ (整数配列) を送信する際に問題が発生しています。アイデアはありますか?
私の質問が十分に明確でない場合は、さらに説明できます。
あなたのタイトルの質問に答えるために、私はSocketOutputStreamaBufferedOutputStreamで 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()
サーバーに送信できます