ESFramework的最简化应用案例(控制台服务端和客户端,支持文本,振铃提醒,文件传输)

ESFramework是一个.NET通信框架,适用于即时通讯、在线游戏等分布式系统。本文提供了一个简单的控制台服务端和客户端示例,包括文本聊天、振铃提醒和文件传输功能。示例代码展示了如何初始化引擎,并实现客户端与服务端的基本交互。
摘要由CSDN通过智能技术生成

问:ESFramework是什么?

答:.NET通信框架.


问:能做什么?

答:分布式通信的系统如:即时通讯,多人在线游戏、在线网页游戏、文件传送、数据采集、分布式OA系统、远程教育系统等。


问:平台要求?

答:直接构建在.NET Framework 2.0上.


问:具体怎么写?

答:引擎初始化(服务端)

[ESBasic.dll版本2.0.0.0,ESFramework.dll版本6.6.0.0,ESFramework.Boost.dll版本1.0.0.0,均来自官方Demo]

using ESFramework;
using ESFramework.Server.UserManagement;
using ESPlus.Application.Basic.Server;
using ESPlus.Application.Contacts.Server;
using ESPlus.Application.CustomizeInfo;
using ESPlus.Rapid;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleServer
{
    class Program
    {
        static IRapidServerEngine RapidServerEngine = RapidEngineFactory.CreateServerEngine();

        static void Main(string[] args)
        {
            try
            {
                InitEngine();
                //等待用户退出服务应用
                while (true)
                {
                    Console.WriteLine("输入'exit'退出服务器:");
                    string cmd = Console.ReadLine();
                    if (cmd.ToLower() == "exit")
                    {
                        break;
                    }
                    else
                    {

                        Console.WriteLine("输入不正确!");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("发生异常:");
                Console.WriteLine(ex.ToString());
                Console.WriteLine("按任意键结束");
                Console.ReadKey();

            }
            finally
            {
                //关闭服务
                RapidServerEngine.Close();
            }
        }

        private static void InitEngine()
        {
            //此处为免费用户.如果是其它类型的授权用户,请使用下面的语句设定正确的授权用户ID和密码。
            ESPlus.GlobalUtil.SetAuthorizedUser("FreeUser", "");
            //使用简单的好友管理器,假设所有在线用户都是好友。(仅仅用于demo)
            DefaultContactsManager contactsManager = new DefaultContactsManager();
            RapidServerEngine.ContactsManager = contactsManager;
            //初始化服务端引擎端口(CustomizeHandler为客户端的消息,同步调用请求.BasicHandler为登陆验证)
            RapidServerEngine.Initialize(4530, new CustomizeHandler(), new BasicHandler());
            //服务端引擎初始化成功后,其UserManager属性才可用。
            contactsManager.UserManager = RapidServerEngine.UserManager;
            //上线时通知相关联系人
            RapidServerEngine.ContactsController.ContactsConnectedNotifyEnabled = true;
            //下线时通知相关联系人
            RapidServerEngine.ContactsController.ContactsDisconnectedNotifyEnabled = true;
            //设置重登陆模式:新连接取代旧链接
            RapidServerEngine.UserManager.RelogonMode = RelogonMode.ReplaceOld;
            //用户操作事件订阅
            RapidServerEngine.UserManager.UserDisplayer = new UserDisplayer();
        }
    }
    public class UserDisplayer : IUserDisplayer
    {
        public void AddUser(string userID, ClientType clientType, string userAddress)
        {
            Console.WriteLine("");
            Console.WriteLine("AddUser:");
            Console.WriteLine($"增加用户[{userID}],设备类型[{clientType.ToString("G")}],地址[{userAddress}]");
        }

        public void ClearAll()
        {
            Console.WriteLine("");
            Console.WriteLine("ClearAll:");
            Console.WriteLine("清空列表");

        }

        public void OnMessageReceived(string userID, int messageType)
        {
            //用户收到信息事件,用于统计下载次数
            //Console.WriteLine("");
            //Console.WriteLine("OnMessageReceived");
            //Console.WriteLine($"收到用户[{userID}]消息:[{messageType}]");
        }

        public void OnMessageSent(string userID, int messageType)
        {
            //用户收到信息事件,用于统计上传次数
            //Console.WriteLine("");
            //Console.WriteLine("OnMessageSent");
            //Console.WriteLine($"发给用户[{userID}]消息:[{messageType}]");

        }

        public void RemoveUser(string userID, string cause)
        {
            Console.WriteLine("");
            Console.WriteLine("RemoveUser:");
            Console.WriteLine($"用户ID[{userID}]已下线,原因[{cause}]") ;
        }
    }
    public class CustomizeHandler : ICustomizeHandler
    {
        public void HandleInformation(stri
消息部分:<br>1.ESFramework介绍之(1)――网络通信消息协议接口IContract<br><br>2.ESFramework介绍之(2)――网络通信消息NetMessage<br> <br>3.ESFramework介绍之(3)――消息处理器和处理器工厂<br><br>4.ESFramework介绍之(4)――消息拦截器INetMessageHook <br><br>5.ESFramework介绍之(5)――消息分派器IMessageDispatcher<br><br>6.ESFramework介绍之(30)―― 消息侦察者 INetMessageSpy <br><br>7.ESFramework介绍之(31)―― 消息分类及对应的处理器 <br><br><br>通信基础设施(Tcp、Udp)<br>1.ESFramework介绍之(21)-- Tcp组件接口ITcp介绍 <br><br>2.ESFramework介绍之(23)―― AgileTcp <br><br>3.ESFramework介绍之(28)―― Udp组件<br><br><br>基于C/S的4层架构:<br>1.ESFramework介绍之(6)―― 基于C/S的4层架构概述 <br><br>2.ESFramework介绍之(10)-- Tcp连接池<br><br>3.ESFramework介绍之(11)-- Tcp连接池管理器<br><br>4.ESFramework介绍之(12)―― 基于Tcp连接池的消息处理器 <br><br>5.ESFramework介绍之(13)-- 功能插件处理器工厂<br><br>6.ESFramework介绍之(14)-- AS与FS通信方案 <br><br>7.ESFramework介绍之(15)-- IRAS<br><br>8.ESFramework介绍之(17)―― 支持漫游用户和跨区域功能请求 <br><br>9.ESFramework介绍之(18)―― Tcp用户管理器组件 <br><br>10.ESFramework介绍之(19)―― 对动态组ActiveGroup的支持 <br><br>11.ESFramework介绍之(24)―― 日志记录IEsbLogger <br><br>12.ESFramework介绍之(26)-- 支持复杂插件(InnerDealer 和 InnerDispatcher) <br><br>13.ESFramework介绍之(27)-- 支持OverdueMessage <br><br>14.ESFramework介绍之(29)―― 插件公共设施 AddinUtil <br><br>15.ESFramework介绍之(33)―― AS与FS通信实现及相关 <br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值