Java)选择人们可以使用的令牌';t输入或其他想法来解决此问题
我正在制作聊天程序,遇到了一些问题 我尝试Java)选择人们可以使用的令牌';t输入或其他想法来解决此问题,java,string,token,Java,String,Token,我正在制作聊天程序,遇到了一些问题 我尝试stringtokenize数据包。 这个包包括4个项目 Timestamp sendTime, String sendUserID, String chattingMessage, String roomNo. 当客户端发送此数据包时,(数据包为string::string packet;) 我试图通过一些特殊字符(#,@,^…)或服务器端的其他东西来标记这个数据包 但由于chattingMessage,(chattingMessage可以包含任何
stringtokenize
数据包。
这个包包括4个项目
Timestamp sendTime, String sendUserID, String chattingMessage, String roomNo.
当客户端发送此数据包时,(数据包为string::string packet;)
我试图通过一些特殊字符(#,@,^…)
或服务器端的其他东西来标记这个数据包
但由于chattingMessage,(chattingMessage可以包含任何特殊字符..(用户可以在消息中输入任何字符..所以如何选择我的标记化字符??)
我不能选择一个合适的
有没有人有这个问题的想法和解决方案??
我很好奇。设计数据包,使其在字符串内容之前包含字符串的长度。然后您知道该字符串在数据包中的结束位置,以及下一段数据的开始位置
例如,您可以研究如何格式化。设计序列化数据包格式实际上与设计文件格式相同,唯一的区别是从何处读取数据。将用户消息中的
\
的任何实例替换为\
。然后将)
替换为\
。检查)
时,确保前面没有\
。当向用户显示消息时,删除所有未被另一方处理的\
我认为客户端必须发送字节[],而不是字符串。和数据包必须由POJO执行,POJO必须在通信过程中进行序列化/反序列化。如果您的代码插入了分隔符,只需使用用户无法输入的字符,例如字符SOH(标题开头),其Unicode代码点为
\u0001
或STX(文本开头)\u0002