zoukankan      html  css  js  c++  java
  • .net remoting实例

    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.如果想做的更好,弄个安装包,可以在任意机器上跑客户端,去访问服务器。

    写的匆忙,欢迎评论!

  • 相关阅读:
    2018年5月29号(堆排序最小顶)
    2018年5月31号(树状数组)
    2018年5月27号(spfa判断负环)
    2018年6月1号(线段树(1))
    2018年5月28号(差分约束)
    Inno Setup入门(十二)——Pascal脚本(1)
    Inno Setup入门(十六)——Inno Setup类参考(2)
    Inno Setup入门(二十一)——Inno Setup类参考(7)
    Inno Setup入门(十)——操作注册表
    Inno Setup入门(十八)——Inno Setup类参考(4)
  • 原文地址:https://www.cnblogs.com/363546828/p/4113131.html
Copyright © 2011-2022 走看看