VB6:如何获取通过 winsock 发送的字节数?
Posted
技术标签:
【中文标题】VB6:如何获取通过 winsock 发送的字节数?【英文标题】:VB6: How can I get the amount of bytes that send via winsock? 【发布时间】:2014-03-21 03:44:58 【问题描述】:如何获取通过 TCP 连接通过 winsock 发送的字节数?
【问题讨论】:
【参考方案1】:这只是 send() 的返回值。 有关 send 或 Winsock 的更多信息,请查看此处: http://msdn.microsoft.com/library/windows/desktop/ms740149%28v=vs.85%29.aspx
【讨论】:
【参考方案2】:问题:
-
您想知道单个 .SendData() 调用发送了多少字节吗?
或者您想知道在程序运行的整个生命周期中发送了多少字节?
问题 1。
几个选项:
您可以只计算您发送的数据的长度。如果它是一个字符串,这很容易: Len(DataBeingSent) 会给你字节数。告诉我们您要发送的内容或向我们展示一些代码。
您可以使用表单范围变量进行跟踪,但在我看来,这是一种非常糟糕的方法,除非它是针对上面的问题 #2。
Option Explicit
Private lonBytesSent As Long
Private Sub Winsock1_Connect()
Dim strData As String
strData = "This example uses a string but will work with any type being sent."
' Reset the number of bytes sent from any previous packets.
lonBytesSent = 0
Winsock1.SendData strData
End Sub
Private Sub Winsock1_SendComplete()
MsgBox CStr(lonBytesSent) & " byte(s) sent on last transmission.", vbInformation
End Sub
Private Sub Winsock1_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)
lonBytesSent = lonBytesSent + bytesSent
End Sub
问题 2。
如果是这种情况,上述代码只需在调用 .SendData()
之前删除 lonBytesSent = 0
即可。如果要发送大量数据,您可能希望使用比 Long
更大的数据类型。
【讨论】:
以上是关于VB6:如何获取通过 winsock 发送的字节数?的主要内容,如果未能解决你的问题,请参考以下文章