使用MSWinsock.Winsock遇到问题,求查看发送缓冲区的数据量的方法
我用vbs写了一个用MSWinsock.Winsock实现通信的函数。
以下是发送数据的函数,我把数据拆成很多行来发送:
Function SockSendData(SockInstance, Data)
DataArr = Split(Data, vbCrLf)
LastLine = UBound(DataArr)
Line = LBound(DataArr)
Do while Line < LastLine
'Wscript.Sleep 10
SockInstance.SendData DataArr(Line) & vbCrLf
Line = Line + 1
Loop
If LastLine >= 0 Then SockInstance.SendData DataArr(LastLine)
End Function
但是,在发送大量数据时,连接会断开。
于是我在Do-Loop之间加了Wscript.Sleep 10,每发送一行暂停10毫秒,连接便没有断开。
所以这个问题的原因是SockInstance的发送缓冲区溢出了吗?
我将Do-Loop改成这样:
BufferLength = 1024
Do while Line < LastLine
If SockInstance.BytesReceived < BufferLength Then
SockInstance.SendData DataArr(Line) & vbCrLf
Line = Line + 1
End If
Loop
问题还是没有解决,连接断开了。于是我在每发一行后,同时发送SockInstance.BytesReceived的值,发现它始终都是0。后来发现这是接收缓冲区的。
我找不到文档,如果问题真的是发送缓冲区溢出,我想知道返回发送缓冲区数据的数量的函数。
对vbs很不熟悉,若问题很弱智,请各位不要见笑。