.net remoting实例

本文介绍了一个基于.NET Remoting的双工聊天室实现方案。主要包括通信协议定义、客户端消息输入及发送逻辑、服务器端实现和服务启动流程。客户端通过统一资源标识符调用服务器提供的服务,服务器则依据客户端回调接口返回消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通信协议,两个基本功能,显示消息和发送消息。
 /// <summary>
    /// 服务器端回调接口
    /// </summary>
    public interface IChatCallback
    {
        /// <summary>
        /// 回调方法,显示聊天消息
        /// </summary>
        /// <param name="message"></param>
        void ShowMessage(string message);
    }

 public interface IDuplexChat
    {
        void SendMessage(string message, IChatCallback callBack);
    }
2.客户端,录入消息,并使用协议发送出去。
class Program
    {
        static IDuplexChat proxy = null;
        static string message = string.Empty;

        static void Main(string[] args)
        {
            RemotingConfiguration.Configure("ChatRoom.Client.exe.config", false);
            proxy  = (IDuplexChat)Activator.GetObject(typeof(IDuplexChat), "http://localhost:8080/ChatRoom/ChatRoomURL");

            message = Console.ReadLine();
            SendMessage(message);
        }

        private static void SendMessage(string message)
        {
            proxy.SendMessage(message, new ChatRoomCallBackHandler());

            message = Console.ReadLine();
            if (message != "exit")
            {
                SendMessage(message);
            }
        }
    }
3.服务器端,客户端调用的时候有一个服务器的url,根据该统一资源标示符找到服务器的提供的基于协议的服务。那么,服务器需要实现该协议,并给客户端返回些结果什么的。
/// <summary>
    /// 实现.net remoting按引用封送的类型
    /// </summary>
    public class DuplexChatRemoting : MarshalByRefObject, IDuplexChat
    {
        public void SendMessage(string message, IChatCallback callBack)
        {
            Console.WriteLine("Invoke the method SendMessage()");

            //do other......
            callBack.ShowMessage(message);
        }
    }
4.客户端、服务器和协议都有了。那么客户端随时都有可能访问服务器端,那么就需要服务器端一直运行着。因此需要一个寄宿器,让服务器端跑起来。
    class Program
    {
        static void Main(string[] args)
        {
            RemotingConfiguration.Configure("ChatRoom.ConsoleHost.exe.config", false);
            Console.WriteLine(".Net Remoting 服务已启动......");
            Console.Read();
        }
    }
5.如果想做的更好,弄个安装包,可以在任意机器上跑客户端,去访问服务器。

写的匆忙,欢迎评论!

转载于:https://www.cnblogs.com/363546828/p/4113131.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值