1

我想知道如何在 Java 的缓冲区中正确分隔字符串(在 Apache MINA 中使用 IoBuffers)。这是一些示例代码:

客户端

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

由于我将一个字符串一个接一个地放入字符串中,因此当服务器接收到缓冲区时,它将被视为一个字符串。

服务器端

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

这将在第二个 getString() 上抛出某种异常,因为程序认为它得到了整个字符串(因为这两个字符串放在一起算作一个字符串)。

我应该如何正确分隔这两个字符串?显而易见的方法是执行以下操作:

“用户名密码”

在服务器端:

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

这是最好的方法吗?还是有更合适的方法来分隔这两个字符串?

非常感谢!

4

2 回答 2

1

你有很多方法:通常使用 ' \n' 是最好的 [ 使用 readLine() 或 nextLine() ] , ' \t' 有时就像在 CSV

您还可以使用不在 LANG 中的特定字符,例如不在 ASCII ' ¨' 中的重音符号,或像 ' §' ' µ'这样的符号

你也可以,不可打印的 BELLchar delim = '7';

于 2012-08-27T15:19:26.593 回答
0

我认为最好的方法是使用分隔符,但可能不是,:因为它用于搜索路径等。分号;可能是一个更好的分隔符,即使它看起来不太好。

这就是我至少在我的应用程序中使用的方法。

于 2012-08-27T09:00:39.810 回答