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

    写的匆忙,欢迎评论!

  • 相关阅读:
    HDU 1069 Monkey and Banana
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    Gym100923H Por Costel and the Match
    Codeforces 682C Alyona and the Tree
    Codeforces 449B Jzzhu and Cities
    Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes
    Codeforces 598D (ccpc-wannafly camp day1) Igor In the Museum
    Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板
    快乐数问题
  • 原文地址:https://www.cnblogs.com/363546828/p/4113131.html
Copyright © 2011-2022 走看看