NetChatRoom
一个基于HslCommunication实现的局域网实时聊天的项目,采用C-S架构实现,除了实现基本的消息发送,还包括了在线信息的管理,系统消息的查看。
Install / Use
/learn @dathlin/NetChatRoomREADME
NetChatRoom
本异步聊天程序由3个项目组成,服务器,共同组件,客户端
版权声明
本软件著作权归Richard.Hu所有。
特性支持
一个基于HslCommunication实现的局域网实时聊天的项目,采用C-S架构设计实现,主要特性如下:
- 局域网聊天室支持多人在线,上限取决于服务器的电脑性能
- 支持用户名登录,支持重复的用户名登录
- 支持显示所有在线客户端的信息显示,包括在线时间,上线时间,ip地址,用户名等等
- 支持服务器主动发消息给客户端
- 支持服务器强制关闭客户端
- 支持其他人的上下线信息跟踪
博客地址
http://www.cnblogs.com/dathlin/p/8097897.html (介绍更加详细一点)
界面截图
服务器

客户端

代码示例
客户端发送消息到服务器,只需要一个方法就实现数据群发操作
<pre> <code> net_socket_client.Send(2, "这是一个消息"); </code> </pre>客户端接收服务器的指令进行的操作
<pre> <code> private void Net_socket_client_AcceptString(AsyncStateOne state, NetHandle customer, string data) { // 我们规定 // 1 是系统消息, // 2 是用户发送的消息 // 3 客户端在线信息 // 4 退出指令 // 当你的消息头种类很多以后,可以在一个统一的类中心进行规定 if (customer == 1) { ShowSystemMsg(data); } else if(customer == 2) { ShowMsg(data); } else if(customer == 3) { ShowOnlineClient(data); } else if(customer == 4) { // 退出系统 QuitSystem( ); } } </code> </pre>因为客户端的操作大部分需要和UI进行交互,所以必须使用委托在前台操作显示。
服务器端的信息处理如下:
<pre> <code> private void ComplexServer_AcceptString(AsyncStateOne object1, NetHandle object2, string object3) { // 我们规定 // 1 是系统消息, // 2 是用户发送的消息 // 3 客户端在线信息 // 4 强制客户端下线 // 当你的消息头种类很多以后,可以在一个统一的类中心进行规定 if (object2 == 2) { // 来自客户端的消息,就只有这么一种情况 NetMessage msg = new NetMessage() { FromName = object1.LoginAlias, Time = DateTime.Now, Type = "string", Content = object3, }; // 群发出去 complexServer.SendAllClients(2, JObject.FromObject(msg).ToString()); } } </code> </pre>整个流程就是 客户端输入信息,发送给服务端,服务器端接收到数据并群发给所有客户端显示。
Related Skills
node-connect
350.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
