Lihongli2Message 使用说明
项目概述
这是一个在现有TCP通信框架基础上添加的新消息类型 Lihongli2Message
(李宏利消息),
用于在现有的客户端和服务器之间进行消息通信。
实现内容
1. 新增消息类型
- 文件位置:
Demos/HomeWork/Lihongli2Message.cs
- 消息类型:
Lihongli2Message
- 消息码:
0x0006
- 注释: “李宏利”
2. 消息属性
- 发送者姓名: 消息发送者的姓名
- 消息内容: 实际的消息文本
- 发送时间: 消息发送的时间戳
- 消息类型: 消息的类型(默认:“李宏利消息”)
3. 修改的现有程序
客户端 (MessageClientApp)
- 修改文件:
MessageCommunication/MessageClientApp/Program.cs
- 新增功能:
- 在调试菜单中添加选项 “2” 发送李宏利消息
- 添加
SendLihongli2Message()
方法 - 添加
ServerApp_ReceiveDefaultMessage()
方法处理接收的李宏利消息 - 注册
ReceiveDefaultMessage
事件
服务器 (MessageServerApp)
- 修改文件:
MessageCommunication/MessageServerApp/Program.cs
- 新增功能:
- 在调试菜单中添加选项 “lihongli2” 发送测试消息
- 添加
SendLihongli2TestMessage()
方法
服务器通信层 (MessageCommunicationServer)
- 修改文件:
MessageCommunication/MessageCommunicationServer/CommunicationServerEntrance.cs
- 新增功能:
- 修改
_commServer_ReceivedMessage()
方法处理李宏利消息 - 添加消息解析和显示功能
- 修改
使用方法
第一步:启动服务器
- 运行
MessageServerApp
项目 - 服务器将在端口 18888 上监听
第二步:启动客户端
- 运行
MessageClientApp
项目 - 选择通道 “6” (客户端通道)
- 客户端将连接到服务器
第三步:发送李宏利消息
在客户端调试菜单中:
- 输入 “2” 发送李宏利消息
- 按提示输入发送者姓名、消息内容和消息类型
第四步:服务器发送测试消息
在服务器调试菜单中:
- 输入 “lihongli2” 发送测试消息
消息格式
数据格式
消息数据使用分隔符格式:发送者|内容|时间|类型
示例:
李宏利|你好,这是一条测试消息|2024-01-01 12:00:00|李宏利消息
通道配置
- 客户端通道:
0x0020
(通道6:客户端) - 广播通道:
0x0000FFFF
(发送给所有客户端)
技术实现
1. 消息继承关系
Lihongli2Message : MessageBase
2. 关键方法
GetMessageCode()
: 返回消息码0x0006
BuildPackage()
: 将消息序列化为字节数组ToJsonString()
: 转换为JSON格式字符串FromBytes()
: 从字节数组解析消息
3. 通信流程
- 客户端创建
Lihongli2Message
对象 - 调用
ServerApp.SendMessage()
发送消息 - 消息通过TCP传输到服务器
- 服务器接收并解析消息
- 服务器转发消息给其他客户端
- 其他客户端接收并显示消息
测试步骤
-
启动服务器:
dotnet run --project MessageCommunication/MessageServerApp/MessageServerApp.csproj
-
启动客户端:
dotnet run --project MessageCommunication/MessageClientApp/MessageClientApp.csproj
-
在客户端选择通道6
-
发送消息:
- 在客户端输入 “2” 发送李宏利消息
- 在服务器输入 “lihongli2” 发送测试消息
-
查看消息接收:
- 客户端会显示收到的李宏利消息
- 服务器会显示接收到的李宏利消息
注意事项
- 确保服务器已启动并监听正确的端口
- 检查网络连接是否正常
- 确保消息内容不为空
- 消息码
0x0006
是唯一的,避免与其他消息类型冲突
总结
这个实现成功地在现有TCP通信框架中添加了新的消息类型:
- 新增
Lihongli2Message
消息类型 - 修改现有客户端支持发送和接收李宏利消息
- 修改现有服务器支持处理李宏利消息
- 使用通道6(客户端通道)
- 完整的消息收发功能
- 服务器端消息转发功能