1

Javaでバッファ内の文字列を適切に区切る方法を考えていました(Apache MINAでIoBuffersを使用)。コード例を次に示します。

クライアント側

IoBuffer buffer = IoBuffer.allocate(100);
buffer.putString("username");
buffer.putString("password");
buffer.flip();
session.write(buffer);

文字列に次から次へと文字列を入れているので、サーバーがバッファを受け取ると1つの文字列として扱われます。

サーバ側

IoBuffer buffer = (IoBuffer) message;
String username = buffer.getString(Charset.forName("UTF-8").newDecoder());
String password = buffer.getString(Charset.forName("UTF-8").newDecoder());

これは、2 番目の getString() である種の例外をスローします。これは、プログラムが文字列全体を取得したと見なすためです (2 つの文字列をまとめて 1 つの文字列としてカウントするため)。

これら 2 つの文字列を適切に区切るにはどうすればよいですか? 明らかなアプローチは、次のようなことです。

"ユーザー名パスワード"

サーバー側では:

String[] args = buffer.getString(Charset.forName("UTF-8").newDecoder()).split(":", 2);
String username = args[0];
String password = args[1];

それはこれを行うための最良の方法ですか?または、これら 2 つの文字列を区切るより適切な方法はありますか?

どうもありがとうございました!

4

2 に答える 2

1

あなたには多くの方法があります:通常は' \n'を使用するのが最善です[readLine()またはnextLine()で]、' \t'いつかCSVのように

ASCIIにないアクセントのように、LANGにない特定の文字¨、または' §'''のµような記号を使用することもできます。

また、印刷できないベルもできますchar delim = '7';

于 2012-08-27T15:19:26.593 に答える
0

区切り文字を使用するのが最善の方法だと思いますが:、検索パスなどで使用されるため、おそらく使用しないでください。;見栄えはよくありませんが、おそらくセミコロンの方が適切な区切り文字です。

それが、少なくとも私のアプリケーションで使用するアプローチです。

于 2012-08-27T09:00:39.810 に答える