.NET/네트워크 프로그래밍 C#

.NET 리모팅

언제나휴일 2020. 7. 2. 13:58
반응형

 

공용 라이브러리 (Class 라이브러리로 제작)

using System;

namespace GeneralLib
{
    public class General:MarshalByRefObject
    {
        public string ConverIntToStr(int num)
        {
            Console.WriteLine("ConvertIntToStr 메소드 수행(전달 받은 인자:{0})", num);
            switch(num)
            {
                case 0: return "영";
                case 1: return "일";
                case 2: return "이";
                default: return "아직 모르는 수예요.";
            }
        }
    }
}

닷넷 리모팅 서버(여기에서는 콘솔 응용으로 제작하였음)

using GeneralLib;
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace 리모팅_서버
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpChannel hc = new HttpChannel(10400);//TCP :BinaryFormatter, HTTP:SoapFormatter
            ChannelServices.RegisterChannel(hc, false);
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(General),
                "MyRemote",
                WellKnownObjectMode.Singleton);
            Console.ReadKey();
        }
    }
}

닷넷 리모팅 클라이언트

using GeneralLib;
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace 리모팅_클라이언트
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpChannel hc = new HttpChannel();
            ChannelServices.RegisterChannel(hc, false);
            General gen = Activator.GetObject(
                typeof(General),
                "http://[서버의 IP 주소]:10400/MyRemote"
                ) as General;
            string str = gen.ConverIntToStr(2);
            Console.WriteLine("호출 결과:{0}", str);
            Console.ReadLine();
            str = gen.ConverIntToStr(1);
            Console.WriteLine("호출 결과:{0}", str);
            Console.ReadLine();
            str = gen.ConverIntToStr(3);
            Console.WriteLine("호출 결과:{0}", str);
            Console.ReadLine();
            str = gen.ConverIntToStr(0);
            Console.WriteLine("호출 결과:{0}", str);
            Console.ReadLine();
        }
    }
}

실행 후 서버 측 결과

ConvertIntToStr 메소드 수행(전달 받은 인자:2)
ConvertIntToStr 메소드 수행(전달 받은 인자:1)
ConvertIntToStr 메소드 수행(전달 받은 인자:3)
ConvertIntToStr 메소드 수행(전달 받은 인자:0)

실행 후 클라이언트 측 결과

호출 결과:이
호출 결과:일
호출 결과:아직 모르는 수예요.
호출 결과:영
반응형