C# C上的Winsock多客户端#

C# C上的Winsock多客户端#,c#,vb6,client-server,winsock,vb6-migration,C#,Vb6,Client Server,Winsock,Vb6 Migration,我的任务是制作一个简单的winsock聊天程序,使用VB.6作为客户端,C#作为服务器。 它与一个客户机配合使用时效果良好。但我很难处理多个客户。有人能帮我吗?我在谷歌上搜索,但几乎找不到答案。Thx 这是我的密码 当连接请求到来时: private void sckMain_ConnectionRequest(object sender, AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent e) {

我的任务是制作一个简单的winsock聊天程序,使用VB.6作为客户端,C#作为服务器。 它与一个客户机配合使用时效果良好。但我很难处理多个客户。有人能帮我吗?我在谷歌上搜索,但几乎找不到答案。Thx

这是我的密码

当连接请求到来时:

    private void sckMain_ConnectionRequest(object sender, AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent e)
    {
        sckMain.Close();
        sckMain.Accept(e.requestID);
        IsConnect = true;

        //lstSocket = new List<clsSocket>();
        //runTCP();
        //sckMain.Close();
        //with this commands we accept the connection request to the server..
        //now we are connected with the client
        txtHistory.Text += "Client Connected :" + sckMain.RemoteHostIP + Environment.NewLine;
    }

首先,您可以使用一些托管网络类,这样就不必使用COM。他们是TcpListener和TcpClient。当您有一个侦听器时,Accept方法返回一个TcpClient。然后,您可以保留客户列表。其次,您需要实现一个登录协议。在初始连接时,您可能会让客户端传递一个用户id,以便您可以与其他用户共享它。这样,他们就可以直接向一个人发送消息,而不是向团队广播消息。@Lorek:thx对于这个建议,我还在学习C#。当我使用TCPListener和TCPClient时,我仍然可以从使用VB6 winsock的应用程序接收消息吗?你有TCPListener和TCPClient程序的示例吗?我刚在谷歌上搜索了一下,发现了这个示例:如果你想发送二进制消息而不仅仅是字符串,下面是我写的一篇文章的链接,可以帮助你在VB中序列化/反序列化消息:非常感谢@lorek
    private void sckMain_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
    { //ON DATA ARRIVAL
        string data = "";
        object objData = (object)data;
        sckMain.GetData(ref objData);
        data = objData.ToString();
        txtHistory.Text += "[" + sckMain.RemoteHostIP + "]: " + data + Environment.NewLine;
    }