我正在用Java創建一個聊天應用程序。用戶可以在一條消息中發送多個新行。以前,我不允許用戶發送新的線路。所以很容易使用換行符作爲End Of Message。但現在我允許用戶在消息中發送新行。我應該使用什麼字符/字符串來標記消息的結尾。聊天應用程序。消息的結尾應該是什麼字符
0
A
回答
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建議的EOF
和NUL
字符。
只要確保它是用戶不會在其郵件中使用的字符。
+0
Downvoter請解釋downvote的原因。因爲我將在我的簡單應用程序中使用此方法。一旦演示通過,我將使用更高級的方法,例如在消息中指定消息長度。 –
相關問題
- 1. 聊天應用程序的服務器端應該是什麼?
- 2. ios聊天消息應用程序
- 3. Firebase聊天應用程序:查詢消息,優化應該是OR的查詢,或者改進NoSQL db結構
- 4. 爲什麼我的聊天應用程序有時不接收消息?
- 5. 在GTK + 3中編寫堆棧交換聊天應用程序,我應該使用什麼來顯示消息?
- 6. 通知用戶在聊天應用程序中的新消息
- 7. iOS聊天應用程序的用戶狀態消息
- 8. Skype聊天窗口中的控件,iPhone消息應用程序
- 9. 聊天應用程序中的消息數據庫設計
- 10. JavaFx ListView for load在聊天應用程序中的消息
- 11. 什麼是構建聊天應用程序的理想方法?
- 12. 如何在聊天應用程序中使用Dhtmlx消息
- 13. 消息用戶名未定義爲ActionCable聊天應用程序
- 14. 什麼是落後聊天Android應用
- 15. 當我發送消息時,Socket.io聊天應用程序刷新
- 16. Swift 3 Firebase聊天應用程序重複消息
- 17. Android聊天應用程序消息問題
- 18. 存儲聊天應用程序數據(消息)
- 19. 「頻道」是什麼意思在Facebook聊天應用程序?
- 20. Android聊天應用程序
- 21. JavaFX聊天應用程序
- 22. ASP.NET聊天應用程序
- 23. Java套接字聊天應用程序
- 24. redis-我應該使用redis來存儲聊天消息嗎?
- 25. 什麼應該是ASP.NET中的MVC應用程序的結構?
- 26. 在聊天應用程序中分享ObservableCollection消息是否正確?
- 27. 全球聊天應用的正確編程模式是什麼?
- 28. 什麼gmail用於聊天應用程序
- 29. 什麼是Django「應用程序」應該是什麼意思?
- 30. 使用Pubnub的聊天應用程序
['EOF'](http://www.fileformat.info/info/unicode/char/0003/index.htm)字符看起來是一個非常不錯的選擇。 –
NUL字符('\ 0')看起來很不錯。更好的是,如果你可以改變協議來發送輸入的長度,然後輸入實際的字節。 – KDM