Приложение чата. Каким должен быть конец символа сообщения
Я создаю чат-приложение на Java. Пользователь может отправить несколько новых строк в одном сообщении. Раньше я не разрешал пользователю отправлять новые строки. Так что было легко использовать символ новой строки в качестве конца сообщения. Но теперь я разрешаю пользователю отправлять новые строки в сообщении. Какой символ / строку я должен использовать, чтобы отметить конец сообщения.
2 ответа
Вы можете легко избежать конца сообщения, добавив дополнительные 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 байта в целое число. Это длина вашего входящего сообщения. Затем проанализируйте эти байты.
Это ваше приложение, так что вы можете свободно использовать все, что угодно, в том числе EOF
а также NUL
персонажи, предложенные Марко и KDM.
Просто убедитесь, что это символ, который ваши пользователи не будут использовать в своих сообщениях.