C# Remoting TcpChannel

来源:互联网 发布:字库制作软件 编辑:程序博客网 时间:2024/05/29 14:50
namespace RM_Server{    class Program    {        static void Main(string[] args)        {            TcpChannel tcpChannel = new TcpChannel(8085);            HttpChannel httpChannel = new HttpChannel(8086);            ChannelServices.RegisterChannel(tcpChannel);            ChannelServices.RegisterChannel(httpChannel);            RemotingConfiguration.RegisterWellKnownServiceType(typeof(HelloServer), "Test.Server", WellKnownObjectMode.Singleton);            System.Console.WriteLine("Press Enter key to exit");            System.Console.ReadLine();        }    }}


namespace RM_Client{    class Program    {        static void Main(string[] args)        {            //HttpChannel chan2 = new HttpChannel();            //TcpChannel chan2 = new TcpChannel();            IDictionary httpProp = new Hashtable();            httpProp.Add("name", "PayServer.Binary");            httpProp.Add("timeout", "30000");            httpProp.Add("useIpAddress", "false");            BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();            BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();            serverProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;            TcpChannel tcpChannel = new TcpChannel(httpProp, clientProvider, serverProvider);            IChannel[] channels = ChannelServices.RegisteredChannels;            ChannelServices.RegisterChannel(tcpChannel);            HelloServer obj1 = (HelloServer)Activator.GetObject(                typeof(HelloServer),                "http://localhost:8086/Test.Server");            if (obj1 == null)            {                System.Console.WriteLine(                    "Could not locate HTTP server");            }            Console.WriteLine(                "Client1 TCP HelloUserMethod {0}",                obj1.HelloUserMethod(new User("xxx", true)));            Console.ReadLine();        }    }}

namespace RM_Model{    [Serializable]    public class User    {        public User(string name, bool male)        {            this.Name = name;            this.Male = male;        }        public string Name { get; set; }        public bool Male { get; set; }    }}

namespace RM_Model{    public class HelloServer : MarshalByRefObject    {        public HelloServer()        {            Console.WriteLine("HelloServer activated");        }        public String HelloUserMethod(User user)        {            string title;            if (user.Male)                title = "先生";            else                title = "女士";            Console.WriteLine("Server Hello.HelloMethod : 你好,{0}{1}", user.Name, title);            return "你好," + user.Name + title;        }    }}


0 0
原创粉丝点击