VB6:如何获取通过winsock发送的字节数?

时间:2014-03-21 03:44:59

标签: tcp vb6 winsock

如何通过TCP连接获取通过winsock发送的字节数?

2 个答案:

答案 0 :(得分:0)

它只是send()的返回值。 有关send或Winsock的更多信息,请查看此处: http://msdn.microsoft.com/library/windows/desktop/ms740149%28v=vs.85%29.aspx

答案 1 :(得分:0)

问题:

  1. 您是否想知道通过单个.SendData()调用发送了多少字节?
  2. 或者您想知道在程序运行的整个生命周期中发送了多少字节?
  3. 问题1。

    有几个选择:

    1. 您只需计算您发送的数据的长度即可。如果它是一个字符串就很容易:Len(DataBeingSent)会给你字节数。告诉我们您发送的内容或向我们展示一些代码。

    2. 您可以使用表单范围变量跟踪,但在我看来这是一种非常差的方法,除非上面的问题#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
      
    3. 问题2。

      如果是这种情况,上述代码只会在lonBytesSent = 0来电之前删除.SendData()。如果您要发送大量数据,则可能需要使用比Long更大的数据类型。