我有一個發件人,一個消息轉發器,它以每個消息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