• .net remoting范例


    1:创建类库:

    using System;

    namespace RemoteHello
    {
     /// <summary>
     /// Hello 的摘要说明。
     /// </summary>

     public class Hello : System.MarshalByRefObject
     {
      public Hello()
      {
       //
       // TODO: 在此处添加构造函数逻辑
       //
       Console.WriteLine("Constructor called");
      }

      ~Hello()
      {
       Console.WriteLine("Destructor called");
      }

      public string Greeting(string name)
      {
       Console.WriteLine("Greeting called");
       return "Hello," + name;
      }
     }
    }

    2::创建一个工程文件,是SERVER端的。

    using System;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;

    namespace HelloServer
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class HS
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
       try
       {
        TcpServerChannel channel =new TcpServerChannel(8086);
        ChannelServices.RegisterChannel(channel);
        Type t=typeof(RemoteHello.Hello);   
        RemotingConfiguration.RegisterWellKnownServiceType(t,"hi",WellKnownObjectMode.SingleCall);
        Console.WriteLine("hit to exit");
        Console.ReadLine();
       }
       catch (Exception ex)
       {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.Source);
        Console.ReadLine();
       }
      }
     }
    }

    3:创建一个工程文件是client端的:

    using System;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;

    namespace HelloClient
    {
     /// <summary>
     /// Class1 的摘要说明。
     /// </summary>
     class HC
     {
      /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
       //
       // TODO: 在此处添加代码以启动应用程序
       //
       try
       {
        TcpClientChannel tc=new TcpClientChannel();
        ChannelServices.RegisterChannel(tc);
        RemoteHello.Hello obj = (RemoteHello.Hello)Activator.GetObject(typeof(RemoteHello.Hello),"tcp://10.10.10.111:8086/hi");
        if(obj==null)
        {
         Console.WriteLine("FAILED!");
         return;
        }
        for(int i=0;i<2;i++)
        {
         Console.WriteLine(obj.Greeting("haha"));
         Console.ReadLine();
        }
       }
       catch (Exception ex)
       {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.Source);
        Console.ReadLine();
       }   
      }
     }
    }

    3:在编译完以后,先运行server.exe文件,然后再运行client.exe文件,,,这样在MS-DOS下面,就可以看到,client掉用server。。。

    PS:1建立的类库,2,3建立的控制台程序.

    2.3必须引用1的DLL文件

    呵呵。。。完毕。。

  • 相关阅读:
    优达,计算机科学导论
    关于未来发展阶段小结
    CS50.5
    CS50.4
    简单查看tomcat中部署java服务的内存使用情况
    python3环境搭建(CentOS7.2)
    mysql主从配置脚本
    安装rkhunter
    转移到博客园啦!
    Eclipse上Maven环境配置使用 (全)
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1541013.html
Copyright © 2020-2023  润新知