C# 如何在网络流接收到值后将其返回到其他类(消息聊天)

C# 如何在网络流接收到值后将其返回到其他类(消息聊天),c#,C#,我很难说出这个问题并解决我的问题 我正在挑战自己创建一个包含多个聊天客户端的聊天服务器 我已经创建了一个服务器,在通过TCP接收新连接时实例化一个新的ClientManager对象。我目前缺少各种管理方面的知识,因此请忽略这些知识,因为我首先要解决的是这一点: 一旦建立了连接,ClientManager将为接收流创建一个新的后台工作程序。我遇到的问题是,一旦读取流,我如何将该信息转发回我的主服务器类,以便将金额分配给其他客户端(聊天客户端) 再一次,我遗漏了一些管理选项,如线程、信号量等,但随着

我很难说出这个问题并解决我的问题

我正在挑战自己创建一个包含多个聊天客户端的聊天服务器

我已经创建了一个服务器,在通过TCP接收新连接时实例化一个新的
ClientManager
对象。我目前缺少各种管理方面的知识,因此请忽略这些知识,因为我首先要解决的是这一点:

一旦建立了连接,
ClientManager
将为接收流创建一个新的后台工作程序。我遇到的问题是,一旦读取流,我如何将该信息转发回我的主服务器类,以便将金额分配给其他客户端(聊天客户端)

再一次,我遗漏了一些管理选项,如线程、信号量等,但随着我的构建,这些都会出现

以下是我的服务器如何建立连接:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.ComponentModel;

namespace ChatServer
{
    class Program
    {
        private IPAddress localAddr;
        private int serverPort;
        private BackgroundWorker bwListener;
        private List<ClientManager> clients;

        private TcpListener server;

        static void Main(string[] args)
        {
            Program progInstance = new Program();
            progInstance.clients = new List<ClientManager>();

            progInstance.server = null;
            try
            {
                // Set the TcpListener on port 13000.
                progInstance.serverPort = 13000;
                progInstance.localAddr = IPAddress.Parse("127.0.0.1");

                // Start to listen
                progInstance.bwListener = new BackgroundWorker();
                progInstance.bwListener.WorkerSupportsCancellation = true;
                progInstance.bwListener.DoWork += new DoWorkEventHandler(progInstance.ServerListen);
                progInstance.bwListener.RunWorkerAsync();

            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
            finally
            {
                // Stop listening for new clients.
                //progInstance.server.Stop();
            }


            Console.WriteLine("\nHit enter to continue...");
            Console.Read();
        }

        private void ServerListen(object sender, DoWorkEventArgs e) {
            this.server = new TcpListener(this.localAddr, this.serverPort);
            this.server.Start();
            // Enter the listening loop.
            while (true)
            {
                Console.Write("Waiting for a connection... \n");
                Socket client = server.AcceptSocket();
                this.AcceptClientConnection(client);
            }
        }


        private void AcceptClientConnection(Socket client) {

            ClientManager newClient = new ClientManager(client);
            this.clients.Add(newClient);
        }

        private void DisplayClientConnections() {

        }
    }
}
我在想,服务器应该以某种方式检索这些信息,然后将其写入流,或者我会这样做吗?我会从
ClientManager
写回流,然后让我的实际客户机监听并接收?我完全不知道如何处理聊天服务器的这一部分

using System;
using System.Net.Sockets;
using System.ComponentModel;

namespace ChatServer
{
    class ClientManager
    {
        NetworkStream stream;
        private Socket socket;
        private BackgroundWorker bwReceiver;
         //data = null;
        public ClientManager(Socket socket)
        {
            this.socket = socket;
            this.stream = new NetworkStream(this.socket);
            this.bwReceiver = new BackgroundWorker();
            this.bwReceiver.DoWork += new DoWorkEventHandler(StartReceive);
            this.bwReceiver.RunWorkerAsync();
        }

        private void StartReceive(object sender, DoWorkEventArgs e) {
            String data = null;
            Byte[] bytes = new Byte[256];
            int i;
            while (this.socket.Connected) {            
                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine("Received: {0}", data);
                }
            }

        }
    }
}