static void Main(string[] args) { var serverChannel = new TcpChannel(8082); ChannelServices.RegisterChannel(serverChannel); RemotingConfiguration.ApplicationName = "TestServer"; RemotingConfiguration.RegisterWellKnownServiceType( typeof(IServer), "MyServerUri", WellKnownObjectMode.SingleCall); // Parse the channel's URI. string[] urls = serverChannel.GetUrlsForUri("MyServerUri"); if (urls.Length > 0) { string objectUrl = urls[0]; string objectUri; string channelUri = serverChannel.Parse(objectUrl, out objectUri); Console.WriteLine("The object URL is {0}.", objectUrl); Console.WriteLine("The object URI is {0}.", objectUri); Console.WriteLine("The channel URI is {0}.", channelUri); } Console.WriteLine("press a key to exit"); Console.ReadLine(); }
[Test] // TcpChannel.Parse () public void ParseURL () { TcpChannel channel; int i; channel = new TcpChannel (); for (i = 0; i < ParseURLTests.Length; i++) { string retval, objectURI; retval = channel.Parse (ParseURLTests[i].input, out objectURI); Assert.AreEqual (ParseURLTests[i].retval, retval, "#C1"); Assert.AreEqual (ParseURLTests[i].objectURI, objectURI, "#C2"); } }
static int Main(string[] argv) { XmlConfigurator.Configure(); //AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; // Get ArchAngel PID from command line arguments if (argv.Length != 2) { Console.WriteLine("This application cannot be run separately from ArchAngel"); return -1; } ArchAngelPID = Int32.Parse(argv[0]); string uri = argv[1]; // Create an instance of a channel TcpChannel channel = new TcpChannel(0); ChannelServices.RegisterChannel(channel, false); // Register as an available service with the name CommandReceiver // Register as a Singleton so only one runs at a time. RemotingConfiguration.RegisterWellKnownServiceType( typeof(CommandReceiver), "CommandReceiver", WellKnownObjectMode.Singleton); ThreadStart start = SearchForArchAngelProcess; Thread thread = new Thread(start); thread.Start(); DebugProcessInfoService dpis = (DebugProcessInfoService)Activator.GetObject( typeof(DebugProcessInfoService), uri); if (dpis == null) { // ArchAngel is either not running or not responding. The process should die either way. EndDebugProcess.Set(); } else { // Get the URI of our remoting services, so we can tell the ArchAngel // process how to contact us. string objectUri = ""; string[] urls = channel.GetUrlsForUri("CommandReceiver"); if (urls.Length > 0) { string objectUrl = urls[0]; string channelUri = channel.Parse(objectUrl, out objectUri); objectUri = channelUri + objectUri; } if (string.IsNullOrEmpty(objectUri)) { throw new Exception( "The Debug Process could not register itself with .Net" + "remoting. This is a serious error and must be reported to Slyce."); } // Inform ArchAngel that we have started. dpis.Started(objectUri); } // Wait for the signal to end the app. EndDebugProcess.WaitOne(); return 0; }