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

时间:2015-09-02 12:01:57

标签: java chat livechat

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

2 个答案:

答案 0 :(得分:0)

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

请确保它是您的用户在其消息中使用的字符。

答案 1 :(得分:0)

您可以通过添加额外的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字节转换为整数。这是您的传入消息长度。然后解析那些字节。