# KrlTcp **Repository Path**: kurilee/KrlTcp ## Basic Information - **Project Name**: KrlTcp - **Description**: C# 简易封装 Socket Tcp 连接的服务端与客户端 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-06-02 - **Last Updated**: 2025-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: Socket, TCP ## README # KrlTcp #### 介绍 C# 简易封装 Socket Tcp 连接的服务端与客户端 #### 定义协议 ``` C# // Package特性,传入指令标识号 [Package(100)] public class ReqShowMessage : BinaryPackage { // 字段特性, 传入序号, 如有需要还有数据长度 [String(0, 256)] public string Message; public override string GetStringMessage() { return $"{{ Message: {Message} }}"; } } [Package(101)] public class RspShowMessage : BinaryPackage { [String(0, 256)] public string Message; public override string GetStringMessage() { return $"{{ Message: {Message} }}"; } } ``` #### 启动服务器 ``` C# // 创建服务器 var server = new Server(); // 注册消息协议 server.PackageManager.Register(); server.PackageManager.Register(); // 添加消息处理事件 server.OnPackageReceived += Server_OnPackageReceived; // 启动 server.srart() private BinaryPackage Server_OnPackageReceived(TcpSocket tcp, BinaryPackage req) { // 参数1 当前tcp // 参数2 数据包 if (req is ReqShowMessage reqShowMessage) { // 处理逻辑 // 返回值将会加入发送队列 // return RspSuccess.Default; // return new RspError() { Code = 500 }; // 或自行决定发送方式 //server.SendTo(tcp.Id, new RspShowMessage() { Message = reqShowMessage.Message }); server.Broadcast(new RspShowMessage() { Message = reqShowMessage.Message }); //return new RspShowMessage() { Message = reqShowMessage.Message }; } return null; } ``` #### 启动客户端 ``` C# // 创建客户端 client = new Client(); // 注册消息协议 client.PackageManager.Register(); client.PackageManager.Register(); // 添加数据处理事件 client.OnResponse += Client_OnResponse; client.OnDisconnected += Client_OnDisconnected; // 启动客户端 client.Start(host, port); ```