Приложение чата. Каким должен быть конец символа сообщения

Я создаю чат-приложение на 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.

Просто убедитесь, что это символ, который ваши пользователи не будут использовать в своих сообщениях.

Другие вопросы по тегам