vb winsock 发送大的数据

2025-02-22 23:42:34
推荐回答(2个)
回答1:

这个你可以发一个段然后等待,接收端收到数据以后发送一个收到消息给发送端,然后发送端再发下一个,然后你可以设置一个超时,超过这个时间发送端没有收到接收端的消息就视为发送失败,这时再重新发送一遍,这样应该可以保证大部分情况下都不会丢包了。

回答2:

用一问一答的方式来传输就不会出错了。服务器端定义一个变量用于记录是否传送完毕。
Dim SendOver As Boolean '模块变量
下面是发送数据代码,加一个标志,continue 表示还有后续
For i =1 to n
SendOver= False
Sendstr =?
if i =n then
Server.SendData "over" & vbtab&Sendstr
else
Server.SendData "continue" & vbtab&Sendstr
end if
If SendOver = False Then '如果客户端没有返回
Do
DoEvents
Loop Until SendOver= True
End If
Next
收到客户端发来的cotinue则表示客户端已收到数据
Private Sub Server_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim InString As String
Server.GetData InString
if instring="continue" then
sendover=true
end sub

客户端
Private Sub Client_DataArrival(ByVal bytesTotal As Long)
接收数据和处理数据代码
Client.Senddata "continue"
end sub