0

这可能是一个多年的话题,但我无法真正弄清楚如何做到这一点。

所以我在 vb6 中启动了一个项目,使用 winsock 控件从连接在 LAN 上的计算机发送和接收消息。

在我的项目中,我包含了两个 Winsock 控件,即 con 和 conn。con 将监听连接请求并让 conn 接受请求,因此 conn 在一个数组中接受来自客户端的多个请求

Private Sub con_ConnectionRequest(ByVal requestID As Long)
    If conn(0).State = sckClosed Then
        conn(0).Accept requestID
    Else
        Load conn(socknum)
        conn(socknum).Accept requestID
    End If
    socknum = socknum + 1
End Sub

现在有多个客户端连接,客户端可以向主机发送消息,但主机只能向 conn 的最后一个索引发送文本消息,或者最后连接的客户端将是唯一可以从主机接收消息的客户端。

Private Sub txtSend_KeyPress(KeyAscii As Integer)
    Dim n As Integer
        If KeyAscii = 13 Then
            If ishost = True Then
                For n = 0 To conn.UBound
                   If conn(n).State = sckConnected Then
                       conn(n).SendData txtSend
                   End If
                Next n
            Else
                con.SendData txtSend
            End If
            txtMessages.Text = txtMessages.Text & vbCrLf & txtSend.Text
        End If
End Sub

我无法弄清楚我的代码有什么问题,因此非常感谢您提供一些帮助或提示。

4

1 回答 1

0

变量ishost定义在哪里?你能把那个代码贴出来吗?

另请发布为ishost分配值的代码。

变量socknum在哪里定义?你能把那个代码贴出来吗?socknum是否在其他地方使用?

调试:在 For n = 0 的行上放置一个断点到 conn.UBound 并使用 F8 逐步执行。执行是否到达这条线?conn.UBound的值是多少?

于 2014-07-09T08:59:25.093 回答