| 123456789101112131415161718192021222324252627282930313233343536373839404142 | using System;using System.Collections;using System.Drawing;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Tcp;using System.Runtime.Serialization.Formatters;using RxMouseService;namespace RxMouseServer{    partial class Program    {        const string SERVICENAME = "MouseService";        static IObserver<Point> Remoting(int port)        {            ConfigureRemoting(port);            RemotingConfiguration.RegisterWellKnownServiceType(typeof(MouseService), SERVICENAME, WellKnownObjectMode.Singleton);            var ms = (IMouseService)Activator.GetObject(typeof(IMouseService), string.Format("tcp://{0}:{1}/{2}", "localhost", port, SERVICENAME));            return (IObserver<Point>)ms;        }        private static void ConfigureRemoting(int port)        {            var serverProvider = new BinaryServerFormatterSinkProvider();            serverProvider.TypeFilterLevel = TypeFilterLevel.Full;            var clientProvider = new BinaryClientFormatterSinkProvider();            IDictionary props = new Hashtable();            props["port"] = port;            props["name"] = SERVICENAME;            props["typeFilterLevel"] = TypeFilterLevel.Full;            ChannelServices.RegisterChannel(new TcpChannel(props, clientProvider, serverProvider), false);        }    }}
 |