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 发送的字节数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 vb6 winsock 发送 python 字符串

VB6 中的 Winsock 控件只向数组中的最后一个索引发送文本消息

winsock多IP发送数据vb6

vb6 - 将消息发送到winsock服务器聊天

VB6 Winsock 能够发送非常大的有效载荷

尝试使用 VB6 Winsock 连接到票务打印机