0

ソケット接続を介して 2 つの異なるパッケージでクライアントからサーバーにジョブ (整数配列) を送信する際に問題が発生しています。アイデアはありますか?

私の質問が十分に明確でない場合は、さらに説明できます。

4

4 に答える 4

4

あなたのタイトルの質問に答えるために、私はSocketOutputStreamaBufferedOutputStreamで aをラップしDataOutputStream、後者のwriteInt()方法を繰り返し使用します。またはObjectOutputStream、代わりに を使用しDataOutputStreamて、配列をシリアル化することもできます: objOutStream.writeObject(theArray)。反対側で再度読み込むにはSocketInputStream、(1) a でラップして繰り返しDataInputStream使用するreadInt()か、(2) aObjectInputStreamで を使用しますreadObject()

(他の言語と相互運用する必要がない場合は、Object*Streamより簡単です)

于 2009-03-19T21:29:03.477 に答える
2

配列として送信する必要がありますか?プロセス全体が複雑になります。コレクションやある種のリストにラップしてみませんか? すなわち:

ObjectOutputStream oos = new ObjectOutputStream(...);
oos.writeObject(integerCollection);



ObjectInputStream ois = new ObjectInputStream(...);
Collection integerCollection = (Collection)ois.readObject();
于 2009-03-19T21:27:54.540 に答える
0

リンクを介してこのデータを送信するために使用しているプロトコルは何ですか? 出力ストリームにシリアル化できるオブジェクトで配列をラップできます。

TCP:この場合、物事は非常に単純なはずです。トランスポート層は、オブジェクトを断片化し、リンクの反対側で正しく処理します。

UDP:少し複雑になることがあります。シリアル化しようとしているオブジェクトが UDP バッファーよりも大きい場合 (バイト単位で)、データを取得できない可能性があります。この状況では、デフォルトの UDP バッファー サイズよりも小さいチャンクでデータを送信できます。

よろしく、

于 2011-06-08T14:39:42.857 に答える
-3

使用して

ArrayList a=new ArrayList(n)    //n represents size

また

List a=new List()

サーバーに送信できます

于 2009-11-28T09:08:26.477 に答える