Skip to content

一个基于HslCommunication实现的局域网实时聊天的项目,采用C-S架构实现,除了实现基本的消息发送,还包括了在线信息的管理,系统消息的查看。

License

Notifications You must be signed in to change notification settings

dathlin/NetChatRoom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetChatRoom

本异步聊天程序由3个项目组成,服务器,共同组件,客户端

版权声明

本软件著作权归Richard.Hu所有。

特性支持

一个基于HslCommunication实现的局域网实时聊天的项目,采用C-S架构设计实现,主要特性如下:

  • 局域网聊天室支持多人在线,上限取决于服务器的电脑性能
  • 支持用户名登录,支持重复的用户名登录
  • 支持显示所有在线客户端的信息显示,包括在线时间,上线时间,ip地址,用户名等等
  • 支持服务器主动发消息给客户端
  • 支持服务器强制关闭客户端
  • 支持其他人的上下线信息跟踪

博客地址

http://www.cnblogs.com/dathlin/p/8097897.html (介绍更加详细一点)

界面截图

服务器

客户端

代码示例

客户端发送消息到服务器,只需要一个方法就实现数据群发操作


net_socket_client.Send(2, "这是一个消息");

客户端接收服务器的指令进行的操作


        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( );
            }
        }

因为客户端的操作大部分需要和UI进行交互,所以必须使用委托在前台操作显示。

服务器端的信息处理如下:


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());
            }
        }

整个流程就是 客户端输入信息,发送给服务端,服务器端接收到数据并群发给所有客户端显示。

About

一个基于HslCommunication实现的局域网实时聊天的项目,采用C-S架构实现,除了实现基本的消息发送,还包括了在线信息的管理,系统消息的查看。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages