using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; public class Range { public long m_start; public long m_end; public long m_candidate; } [ServiceContractAttribute(ConfigurationName = "mapReplaceContract")] public interface IRangeInterface { [OperationContractAttribute] long? findDivisor(Range range); } public class RangeImplementation : IRangeInterface { public long? findDivisor(Range range) { for (long k = range.m_start; k <= range.m_end; ++k) { long res = range.m_candidate / k; if (res * k == range.m_candidate) { return res; } } return null; } } class Program { static void Main() { Console.Write("Enter port number: "); string sPort = Console.ReadLine(); sPort = sPort.Trim(); string URI = "net.tcp://localhost:" + sPort + "/AnyLocallyUniqueName"; using (ServiceHost serviceHost = new ServiceHost(typeof(RangeImplementation))) { serviceHost.AddServiceEndpoint(typeof(IRangeInterface), new NetTcpBinding(), new Uri(URI)); serviceHost.Open(); Console.WriteLine("Service is running on {0}", URI); Console.WriteLine("Hit to kill it."); Console.ReadLine(); } } }