Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)tcpServer(Index).GetData clientDat, vbString
 If Left(clientDat, 3) = "用户名" Then
   ....
exit sub
end ifIf InStr(clientDat,"|##676#5#") > 0 Then
 rsA = Split(clientDat, "##676#5#")
   '    Debug.Print clientDat
            Set iRe = New ADODB.Recordset
               With iRe
                   .Open "select * from chat", cn, 1, 3
                 
                   .AddNew
                 
                 .Fields("word") = rsA(1)
                  .Fields("time") = rsA(2)
   .Update
        End With
end sub
'发送的是 senddata=   "|##676#5#" & trim(text1.text) & "|##676#5#" & date()在局域网中运行正常.但到广域网中就运行错误,好象只取得一段数据,时间出错了
我不知如何写,谢高手指点!!
谢谢!

解决方案 »

  1.   

    明显是延迟的问题,接收的数据不一定是完整的,加个判断比较好,比如在数据结尾加"<ok>"标示,以数据首部判断常会出错时间错那是肯定的,date() 得到是接收端的时间,不是发送端的,
      

  2.   

    1,广域网容易丢包建议使用tcpip协议不要用udp
    2,每个封包希望前缀是总体长度,最后用vbcrlf隔开,这样你可以使用len()来判断是否是符合要求的封包。