C# TcpListener实现简单服务器:用户连接管理与消息收发

这篇文章将介绍如何使用 C# 和 TcpListener 类创建一个简单的服务器应用程序。这个服务器能够处理多个客户端连接,接收来自客户端的消息,并向特定客户端发送消息。

代码实现

以下是完整的代码示例,包含在一个名为 'UdpClientDemo_Server' 的命名空间下的 'Server' 类中:C#namespace UdpClientDemo_Server{ internal class Server { TcpListener server; Action ShowMsg; IPEndPoint localEp; List userList = new List(); TcpClient remote_client;

    public Server(Action<String> ShowMsg, String localIp, int port)        {            this.ShowMsg = ShowMsg;            this.localEp = new IPEndPoint(IPAddress.Parse(localIp), port);            server = new TcpListener(localEp);            server.Start();            Task.Run(() =>            {                StartJS();            });        }        private void StartJS()        {            while (true)            {                remote_client = server.AcceptTcpClient();                SUser newUser = new SUser(ShowMsg, remote_client);

            userList.Add(newUser);                String remoteEp = remote_client.Client.RemoteEndPoint.ToString();                ShowMsg(remoteEp + '上线了');                NetworkStream ns = remote_client.GetStream();

            BinaryReader br = new BinaryReader(ns);                Task.Run(() =>                {                    while (true)                    {

                    try                        {                            String sss = br.ReadString();                            ShowMsg(remoteEp + '>'+ sss);                        }                        catch                        {                            ShowMsg('客户端掉线了!');                            break;                        }

                }                });            }        }        public void Send(String str, int userIndex)        {            SUser findUser = null;            int i = 1;            foreach (SUser u in userList)            {                if (userIndex == i)                {                    findUser = u;                    break;                }                i++;            }            findUser.Send(str);        }    }}

代码解释

  1. Server 类: - 服务器的核心类,负责监听连接请求、管理已连接客户端和处理消息。2. 构造函数: - Action<String> ShowMsg: 委托,用于将消息显示在用户界面上。 - String localIp, int port: 服务器监听的本地IP地址和端口号。 - 初始化 TcpListener 对象,并开始监听连接请求。 - 在后台线程中调用 StartJS 方法处理连接。3. StartJS 方法: - 循环监听连接请求。 - 当有新的客户端连接时: - 创建一个新的 TcpClient 对象来管理连接。 - 创建一个新的 SUser 对象来表示该用户,并将委托和 TcpClient 对象传递给它。 - 将新的 SUser 对象添加到 userList 中。 - 显示消息 indicating new client connection. - 获取 NetworkStream 对象用于读写数据。 - 创建 BinaryReader 对象用于读取客户端消息。 - 在新的后台线程中循环读取客户端消息。4. Send 方法: - String str: 要发送的消息内容。 - int userIndex: 目标用户的索引。 - 查找 userList 中对应索引的 SUser 对象。 - 调用 SUser 对象的 Send 方法发送消息。

总结

这段代码演示了如何使用 C# TcpListener 类创建一个简单的服务器应用程序。它涵盖了创建服务器、监听连接、接收和发送消息,以及管理多个客户端连接等基本功能。 你可以根据自己的需求扩展此代码,例如添加用户认证、数据加密等功能,构建更复杂的网络应用程序。

C# TcpListener实现简单服务器:用户连接管理与消息收发

原文地址: http://www.cveoy.top/t/topic/cVfE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录