2 vb6 networking tcp
我有一个C#Tcp服务器,它向已注册的VB6 Tcp客户端发送消息.消息的接收是以异步方式使用WinSock完成的.所以"完成"消息的VB6部分看起来像:
Private Sub wskConnect_DataArrival(ByVal bytesTotal As Long)
Dim sBuff As String
wskConnect.GetData sBuff, vbString '-- Retrieve sent value
ProcessMessage sBuff '-- Process the value
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是C#Tcp服务器正在发送一个长度为6874的字符串,但是当我们检查DataArrival事件触发时收到的消息大小时,它只测量2920.所以很明显这个传入消息的截断是严重的问题.
有没有人观察过这个?
正如我在这里所说的VB6 WinSock TCP客户端和.NET TCP服务器:
这是一种常见的误解,即您正在接收消息.您正在接收字节流.sBuff可能包含1个字节,它可能包含的是什么使你的消息,经常(如果他们足够小的),它可以conatin邮件的100%,有时它可以包含超过100%,50%(这意味着它有一些部分下一条消息).没有看到ProcessMessage中的代码我不能确定你有问题,但你应该确保该方法可以处理所有这些场景
仅仅因为您在DataArrival上只看到数据长度为2920并不意味着数据被截断.它只是意味着那一刻就可以获得.将该数据读入缓冲区,然后当您发送的数据的下一部分可用时,该事件将再次触发.继续读取可用数据并附加到缓冲区,直到您收到整条消息.
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |