聊天应用程序。消息字符的结尾应该是什么

Chat application. What should be the end of message character

我正在 Java 中创建一个聊天应用程序。用户可以在一条消息中发送多个新行。以前,我不允许用户发送新行。所以很容易使用换行符作为 End OF Message。但现在我允许用户在消息中发送新行。我应该用什么character/string来标记消息的结束。

这是您的应用程序,因此您可以随意使用任何您喜欢的内容,包括 Marko 和 KDM 建议的 EOFNUL 字符。

只需确保它是您的用户不会在他们的消息中使用的字符。

您可以通过添加额外的 4 个字节轻松避免消息结束。前 4 个字节代表消息的长度。然后添加完整消息。

示例发件人代码:

    BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());

    String msg = "its a test message";
    byte[] byteMsg = msg.getBytes();

    int length = byteMsg.length;
    byte[] lengthByte = ByteBuffer.allocate(4).putInt(length).array();

    byte[] finalMsg = new byte[length+4];
    System.arraycopy(lengthByte, 0, finalMsg, 0, 4);
    System.arraycopy(byteMsg, 0, finalMsg, 4, length);

    bufferedOutputStream.write(finalMsg);

当您阅读邮件时,请阅读前 4 个字节。将这 4 个字节转换为整数。这是您的传入消息长度。然后解析那些字节。