聊天应用程序。消息字符的结尾应该是什么
Chat application. What should be the end of message character
我正在 Java 中创建一个聊天应用程序。用户可以在一条消息中发送多个新行。以前,我不允许用户发送新行。所以很容易使用换行符作为 End OF Message。但现在我允许用户在消息中发送新行。我应该用什么character/string来标记消息的结束。
这是您的应用程序,因此您可以随意使用任何您喜欢的内容,包括 Marko 和 KDM 建议的 EOF
和 NUL
字符。
只需确保它是您的用户不会在他们的消息中使用的字符。
您可以通过添加额外的 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 个字节转换为整数。这是您的传入消息长度。然后解析那些字节。
我正在 Java 中创建一个聊天应用程序。用户可以在一条消息中发送多个新行。以前,我不允许用户发送新行。所以很容易使用换行符作为 End OF Message。但现在我允许用户在消息中发送新行。我应该用什么character/string来标记消息的结束。
这是您的应用程序,因此您可以随意使用任何您喜欢的内容,包括 Marko 和 KDM 建议的 EOF
和 NUL
字符。
只需确保它是您的用户不会在他们的消息中使用的字符。
您可以通过添加额外的 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 个字节转换为整数。这是您的传入消息长度。然后解析那些字节。