我试图了解哪种方法可以更好地分割将通过聊天应用程序发送的传入消息。分隔符是^将它分割成一个字符串数组。
一种方法就是这样:
lsIncommingtext.Items.Add(lblContactName.Text & " ^ " & Now.ToString("dd/MM/yyyy") & " ^ " & Now.ToString("hh:mm") & " ^ " & txtChatbar.Text)
第二种方法是:
Dim lineparts() As String
lineparts = line.Split("^")
txtName.Text = lineparts(0)
txtAddip.Text = lineparts(1)
我试图使结束消息的格式为: 的 SendersName ^ DateSent ^ TimeSent ^ MessageData
使用其中的每一个^,用于拆分传入的消息。
答案 0 :(得分:1)
这两种方法都不理想。
如果用户键入4 ^ 2 = 16
,那么您的有效负载会全部搞砸。你想要做的是创建一个能够在所有用户输入和数据碎片中存活的格式。
例如
使消息的第一个字节为消息类型(例如1 =字符串消息,2 =系统更新,3 =文件传输,4 =可见性状态更新... yadda eider)。
接下来的8个字节(Int64)将是有效负载长度。这将告诉您在获得完整消息之前需要从NetworkStream
读取多少字节。如果您要进行文件传输,Int64很好。对于其他一切Int32(4字节)都没问题。
现在有效载荷了。有效载荷可以是你喜欢的任何东西,只要它在前面定义的长度之后结束 - 因为你的下一条消息在有效载荷结束后立即开始。