zoukankan      html  css  js  c++  java
  • C# .net Remoting最简单的例子

    C# .net Remoting最简单的例子

     C# Remoting例子下载

    服务端: 

    using System;
    using System.Runtime.InteropServices;
    using System.Runtime.Remoting.Channels.Tcp;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting;
    //在引用中添加
    namespace RemotingTest
    {
        class Program
        {    
            static void Main(string[] args)
            {
                try
                {
                    TcpServerChannel server = new TcpServerChannel(4567); //端口
                    ChannelServices.RegisterChannel(server, false); //注册通道
                    
    //客户端每次请求, Singleton是同用一个实例, singlecall是用各个实例
                    
    //Singleton和SingleCall都是服务端激活模式(WellKnown模式), 另外还有两种客户端激活模式
                    RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingObj.PictureInfo), "MyRemotingService", WellKnownObjectMode.Singleton);
                    Console.WriteLine("服务正常启动");
                }
                catch (Exception ex) { Console.WriteLine(ex.ToString() + "失败了!"); }
                while (true) { }
            }
        }
    }
    //remoting, webservice传送的对像都要新建一个命名空间
    //这个可以生成一个dll 在服务和客户端都引用
    namespace RemotingObj
    {
        //[Serializable]只调用方法时可写可不写, 传送对像时要写
        public class PictureInfo : MarshalByRefObject
        {
            public string GetPicinfo(string strName)
            {
                return "已返回[" + strName + "]的信息";
            }
            ////SingleCall启动例子要重写InitializeLifetimeService函数, 
            
    ////return null可以使各个实例一直存在 多用在聊天室客户端与服务端相连
            //public override object InitializeLifetimeService()
            
    //{
            
    //    return null;
            
    //}
        }

    } 

    客户端:

     using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;

    namespace Client
    {
        class Program
        {
            static void Main(string[] args)
            {
                ChannelServices.RegisterChannel(new TcpClientChannel(), false); //注册通道
                string strRemoteAddress = @"tcp://localhost:4567/MyRemotingService";
                RemotingObj.PictureInfo pic = (RemotingObj.PictureInfo)Activator.GetObject(typeof(RemotingObj.PictureInfo), strRemoteAddress);
                string str = pic.GetPicinfo("Mypic");
                Console.WriteLine("Remoting连结成功...\n" + str);
                Console.ReadKey();
            }
        }
    }
    namespace RemotingObj
    {

        public class PictureInfo : MarshalByRefObject
        {
            public string GetPicinfo(string strName)
            {
                return "";
            }
        }
    }
  • 相关阅读:
    盒子模型之边框border
    CSS优先级特性之权重叠加
    CSS三大特性:层叠性、继承性、优先级
    行高
    单行文本垂直居中
    !important
    【DP专题】——[USACO13OPEN]照片Photo
    1:n Oberserver模式
    025_递归算法详解
    字符串移动问题
  • 原文地址:https://www.cnblogs.com/barrysgy/p/2281067.html
Copyright © 2011-2022 走看看