networkstream只向连接到服务器的最后一个IP发送数据

本文关键字:IP 最后一个 数据 服务器 连接 networkstream | 更新日期: 2023-09-27 18:22:07

我有一个程序,多个客户端可以使用套接字连接到服务器。

        private void performConnect()
    {
        while (true)
        {
            if (myList.Pending())
            {
                thrd = thrd + 1;
                tcpClient = myList.AcceptTcpClient();
                IPEndPoint ipEndPoint = (IPEndPoint)tcpClient.Client.RemoteEndPoint;
                string clientIP = ipEndPoint.Address.ToString();
                nStream[thrd] = tcpClient.GetStream();
                currentMsg = "'n New IP client found :" + clientIP;
                recieve[thrd].Start();
                this.Invoke(new rcvData(addNotification));
                try
                {
                    addToIPList(clientIP);
                }
                catch (InvalidOperationException exp)
                {
                    Console.Error.WriteLine(exp.Message);
                }
                Thread.Sleep(1000);
            }
            }

    }

然后服务器可以使用此代码向选定的客户端发送数据(聊天消息)。

        private void sendData(String data)
    {
        IPAddress ipep =IPAddress.Parse(comboBox1.SelectedItem.ToString());
        Socket server = new Socket(AddressFamily.InterNetwork , SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint ipept = new IPEndPoint( ipep, hostPort);
        NetworkStream nStream = tcpClient.GetStream();
        ASCIIEncoding asciidata = new ASCIIEncoding();
        byte[] buffer = asciidata.GetBytes(data);
        if (nStream.CanWrite)
        {
            nStream.Write(buffer, 0, buffer.Length);
            nStream.Flush();
        }
    }

问题是,无论我从组合框中选择什么IP,我发送的消息总是指向/发送到连接到服务器的最后一个IP。。请有人帮我找出错误。。感谢您的帮助,提前表示感谢!

networkstream只向连接到服务器的最后一个IP发送数据

这是因为在sendData中执行

NetworkStream nStream = tcpClient.GetStream();

其中CCD_ 2变量存储最后接受的连接。相反,您应该使用nStream[]数组来存储所有连接的流。