我有一个发件人,一个消息转发器,它以每个消息5毫秒的速率发送固定大小的字节数据到我用vb6编写的接收程序,当我运行消息fowarder和我的接收程序在一台机器上,没有问题,但是当它们在单独的机器上运行时,接收程序开始出现一些异常情况。服务器无法在vb6中顺利接收字节数据
例如:
private sub socket_DataArrival(index as integer, ByVal dataTotal as Long)
Dim Data() as Byte
Length.Text = dataTotal
socket.GetData byteData, vbArray + vbByte
If Length.Text = "100" Then
txtOutput.Text = "Message1"
ElseIf Length.Text = "150" Then
txtOutput.text = "Message2"
End Sub
在它有250个字节或当我应该接收100或只有150,但如果非recognizeable字节大小我有时会收到“2合1”的消息我将发送速率降低到每个消息50毫秒的更慢的速度,那么它会没事的。
可以有什么建议吗?谢谢。
TCP数据将按顺序到达。在“消息”之后,也可以使用分隔符代替标头。但是我看不出任何类型的定时器的任何理由。在DataArrival中,您只需将新数据附加到缓冲区,然后解析并处理任何完整的消息。 – Bob77 2010-08-25 17:52:39
感谢您的建议,我使用TCP进行数据传输,我不确定是否可以使用分隔符,因为传入的字节不是字符串消息,而是稍后将相应地移出字节的数组的字节。从上面的例子来看,如果我收到250字节,可能有办法分割它,但有时它会以一些不规则的大小,如180 ...等等。如果我错了,请纠正我。谢谢。 – k80sg 2010-08-26 02:36:14
对于二进制数据,你非常想要一个长度标题,正如上面已经提到的那样。 – Bob77 2010-08-28 02:05:30