2

DataInputStream を使用して、A から B にいくつかの文字列を送信したいと考えています。

これらを使用して送信する方法は知っています.write()が、文字列を分離する最良の方法がわかりません。実際、調査の結果、文字列に文字を追加して B で分割しない限り、それは可能ではないようです。

を使用する代替手段DataInputStreamが検討されます。を作成して送信するつもりでしたArrayが、どうすればよいかわかりませんでした。

これまでのところ、私は持っています:

public String getDetails() {       
 System.out.print("Name: ");
 String uiname = scan.next();
 pout.write(uiname);

 System.out.print("Address: ");
 String uiaddress = scan.next();

 pout.write(uiaddress);

 return "";

}

4

2 に答える 2

2

文字列の長さが 65536 文字未満である限り、DataOutputStream.writeUtf()およびDataInputStream.readUTF( ) を使用できます。文字列やプリミティブよりも複雑なものが必要な場合は、 and を使用する必要がありObjectOutputStreamますObjectInputStream

例 (構文エラーが含まれている可能性があります):

DataOutputStream out = new DataOutputStream(...);
out.writeUtf("foo");
out.writeUtf("bar");
out.close();

DataInputStream in = new DataInputStream(...);
String s1 = in.readUtf();
String s2 = in.readUtf();
// that's all, folks!

このwriteUtf()メソッドは、文字列の前にその文字数を付けます。メソッドはreadUtf()最初に文字数を取得し、次に正確にその文字数を読み取ります。文字列を読み書きしているだけであれば、ストリームはそれを理解できます。

于 2013-03-22T14:40:09.260 に答える
1

2 つのアイデア:

  • 使用DataOutputStream.writeUTFして DataInputStream.readUTF

  • JSON (または XML) のような「ホルダー」形式を使用し、「印刷」した JSON 配列を構築し、それを行うために多数のライブラリのいずれかを使用して反対側でデコードします ( json.orgの JSON ライブラリで十分です)。 )

于 2013-03-22T14:41:41.697 に答える