C# TCP Server 类库 - DMTcpServer 详解
public class DMTcpServer : Component { public System.Net.Sockets.Socket ServerSocket; public Thread StartSockst; public bool IsStartListening; public List<System.Net.Sockets.Socket> ClientSocketList; public DMTcpServer(); public DMTcpServer(IContainer container); [Category("TCP服务端")] [Description("本机监听端口,默认是5000")] public int ServerPort { get; set; } [Category("TCP服务端")] [Description("本机监听IP,默认是本地IP")] public string ServerIp { get; set; } [Category("TcpServer事件")] [Description("用户上线下线时更新客户端在线数量事件")] public event ReturnClientCountEventHandler OnReturnClientCount; [Category("TcpServer事件")] [Description("错误消息")] public event ErrorMsgEventHandler OnErrorMsg; [Category("TcpServer事件")] [Description("接收原始Byte数组数据事件")] public event ReceviceByteEventHandler OnReceviceByte; [Category("TcpServer事件")] [Description("客户端下线时返回客户端事件")] public event AddClientEventHandler OnOfflineClient; [Category("TcpServer事件")] [Description("监听状态改变时返回监听状态事件")] public event StateInfoEventHandler OnStateInfo; [Category("TcpServer事件")] [Description("新客户端上线时返回客户端事件")] public event AddClientEventHandler OnOnlineClient; public void ClientSocketCallBack(object obj); public System.Net.Sockets.Socket ResoultSocket(string ip, int port); public void SendData(string ip, int port, byte[] dataBytes); public void SendData(string ip, int port, string strData); public void Start(); public void StartSocketListening(); public void Stop(); protected override void Dispose(bool disposing); protected virtual void OnTcpServerErrorMsgEnterHead(string msg); protected virtual void OnTcpServerOfflineClientEnterHead(System.Net.Sockets.Socket temp); protected virtual void OnTcpServerOnlineClientEnterHead(System.Net.Sockets.Socket temp); protected virtual void OnTcpServerReceviceByte(System.Net.Sockets.Socket temp, byte[] dataBytes); protected virtual void OnTcpServerReturnClientCountEnterHead(int count); protected virtual void OnTcpServerStateInfoEnterHead(string msg, SocketState state); public delegate void ReceviceByteEventHandler(System.Net.Sockets.Socket temp, byte[] dataBytes); public delegate void ErrorMsgEventHandler(string msg); public delegate void ReturnClientCountEventHandler(int count); public delegate void StateInfoEventHandler(string msg, SocketState state); public delegate void AddClientEventHandler(System.Net.Sockets.Socket temp); public delegate void OfflineClientEventHandler(System.Net.Sockets.Socket temp); } 该代码是一个TCP服务端的类定义,主要用于实现TCP服务器的功能。下面是该类的一些主要方法和事件的说明: - Start()方法:启动TCP服务器,会创建一个新的线程用于监听客户端的连接请求。 - Stop()方法:停止TCP服务器,会关闭服务器的Socket和所有客户端的Socket连接。 - StartSocketListening()方法:在新线程中监听客户端的连接请求,当有新的客户端连接时,会触发OnOnlineClient事件。 - ClientSocketCallBack(object obj)方法:客户端Socket的回调方法,当客户端连接断开时,会触发OnOfflineClient事件。 - SendData(string ip, int port, byte[] dataBytes)方法:向指定的客户端发送字节数组数据。 - SendData(string ip, int port, string strData)方法:向指定的客户端发送字符串数据。 - OnReceviceByte事件:当服务器接收到客户端发送的字节数组数据时触发该事件。 - OnStateInfo事件:当服务器的监听状态发生改变时触发该事件,会传递当前的状态信息。 - OnReturnClientCount事件:当有新的客户端连接或已有的客户端断开连接时,会触发该事件,传递当前在线客户端的数量。 - OnOnlineClient事件:当有新的客户端连接时触发该事件,会传递新连接的客户端的Socket对象。 - OnOfflineClient事件:当有客户端断开连接时触发该事件,会传递断开连接的客户端的Socket对象。 - OnErrorMsg事件:当发生错误时触发该事件,会传递错误信息。 要实现该类,可以根据需要重写各个事件的处理逻辑,并在Start()方法中启动服务器监听,Stop()方法中停止服务器监听和关闭所有连接。同时,需要根据业务需求实现数据的发送和接收逻辑。
原文地址: https://www.cveoy.top/t/topic/p7HB 著作权归作者所有。请勿转载和采集!