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 つの文字列を区切るより適切な方法はありますか?
どうもありがとうございました!