2015-09-02 60 views
0

我正在用Java創建一個聊天應用程序。用戶可以在一條消息中發送多個新行。以前,我不允許用戶發送新的線路。所以很容易使用換行符作爲End Of Message。但現在我允許用戶在消息中發送新行。我應該使用什麼字符/字符串來標記消息的結尾。聊天應用程序。消息的結尾應該是什麼字符

+2

['EOF'](http://www.fileformat.info/info/unicode/char/0003/index.htm)字符看起來是一個非常不錯的選擇。 –

+3

NUL字符('\ 0')看起來很不錯。更好的是,如果你可以改變協議來發送輸入的長度,然後輸入實際的字節。 – KDM

回答

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個字節轉換爲整數。這是您收到的消息長度。然後解析這些字節。

0

這是您的應用程序,因此您可以隨意使用您喜歡的任何內容,包括由Marko和KDM建議的EOFNUL字符。

只要確保它是用戶不會在其郵件中使用的字符。

+0

Downvoter請解釋downvote的原因。因爲我將在我的簡單應用程序中使用此方法。一旦演示通過,我將使用更高級的方法,例如在消息中指定消息長度。 –

相關問題