Main 서버 샘플 : 서버간 P2P통신을 위해 마스터 서버로 접속함 - 여러개의 Main서버를 실행해둔 후 Login 서버에서 서버이동시 자동 로드벨런싱 처리가 이루어진다 - 명령줄인수에 포트번호를 추가해주어야 하나의 컴퓨터에서 여러개의 Main서버를 실행가능 메인서버 1번 : "ServerP2P_Main.exe 20022" <--- 포트번호 다르게 지정 메인서버 2번 : "ServerP2P_Main.exe 20023" 메인서버 3번 : "ServerP2P_Main.exe 20024" ... ...
Example #1
0
        static void Main(string[] args)
        {
            string ipaddr = "127.0.0.1";
            UInt16 portnum = 20000;

            // 로드벨런싱을 위한 여러개의 서버를 실행하기 위해 이 서버의 Listen Port번호를 파라미터로 입력가능
            if (args.Length == 1)
            {
                portnum = UInt16.Parse(args[0]);
            }

            MainServer Svr = new MainServer();

            ZNet.StartOption param = new ZNet.StartOption();
            param.m_IpAddressListen = ipaddr;
            param.m_PortListen = portnum;
            param.m_MaxConnectionCount = 2000;
            param.m_RefreshServerTickMs = 10000;
            param.m_ProtocolVersion = ServerP2P_Common.Join.protocol_ver;

            Svr.m_Core.SetKeepAliveOption(30);

            ZNet.ResultInfo outResult = new ZNet.ResultInfo();
            if (Svr.m_Core.Start(param, outResult))
            {
                Console.WriteLine("MainServer Start ok.\n");
                DisplayHelpCommand();
            }
            else
            {
                Console.WriteLine("Start error : {0} \n", outResult.msg);
            }

            // master client connect
            Svr.m_Core.MasterConnect(
                ServerP2P_Common.MasterServerConnect.master_ipaddr,
                ServerP2P_Common.MasterServerConnect.master_portnum,
                "MainServer",
                (int)ServerP2P_Common.Server.Main
                );

            var ret = ReadLineAsync();
            bool run_program = true;
            while (run_program)
            {
                if (ret.IsCompleted)
                {
                    switch (ret.Result)
                    {
                        case "/h":
                            DisplayHelpCommand();
                            break;

                        case "/stat":
                            DisplayStatus(Svr.m_Core);
                            break;

                        case "/q":
                            Console.WriteLine("quit Server...");
                            run_program = false;
                            break;
                    }

                    if (run_program)
                        ret = ReadLineAsync();
                }

                System.Threading.Thread.Sleep(10);
            }

            Console.WriteLine("Start Closing...  ");
            Svr.m_Core.Dispose();
            Console.WriteLine("Close complete.");

            System.Threading.Thread.Sleep(1000 * 2);
        }
Example #2
0
        static void Main(string[] args)
        {
            string ipaddr  = "127.0.0.1";
            UInt16 portnum = 20033;

            // 로드벨런싱을 위한 여러개의 서버를 실행하기 위해 이 서버의 Listen Port번호를 파라미터로 입력가능
            if (args.Length == 1)
            {
                portnum = UInt16.Parse(args[0]);
            }

            MainServer Svr = new MainServer();

            ZNet.StartOption param = new ZNet.StartOption();
            param.m_IpAddressListen     = ipaddr;
            param.m_PortListen          = portnum;
            param.m_MaxConnectionCount  = 2000;
            param.m_RefreshServerTickMs = 10000;
            param.m_ProtocolVersion     = ServerP2P_Common.Join.protocol_ver;

            Svr.m_Core.SetKeepAliveOption(30);

            ZNet.ResultInfo outResult = new ZNet.ResultInfo();
            if (Svr.m_Core.Start(param, outResult))
            {
                Console.WriteLine("MainServer Start ok.\n");
                DisplayHelpCommand();
            }
            else
            {
                Console.WriteLine("Start error : {0} \n", outResult.msg);
            }

            // master client connect : 서버간 P2P통신을 위해 마스터 서버로 접속하는 부분 (접속 성공 이후 자동으로 모든 서버간 P2P연결 활성)
            Svr.m_Core.MasterConnect(
                ServerP2P_Common.MasterServerConnect.master_ipaddr,
                ServerP2P_Common.MasterServerConnect.master_portnum,
                "MainServer",
                (int)ServerP2P_Common.Server.Main
                );

            var  ret         = ReadLineAsync();
            bool run_program = true;

            while (run_program)
            {
                if (ret.IsCompleted)
                {
                    switch (ret.Result)
                    {
                    case "/h":
                        DisplayHelpCommand();
                        break;

                    case "/stat":
                        DisplayStatus(Svr.m_Core);
                        break;

                    case "/q":
                        Console.WriteLine("quit Server...");
                        run_program = false;
                        break;
                    }

                    if (run_program)
                    {
                        ret = ReadLineAsync();
                    }
                }

                System.Threading.Thread.Sleep(10);
            }

            Console.WriteLine("Start Closing...  ");
            Svr.m_Core.Dispose();
            Console.WriteLine("Close complete.");

            System.Threading.Thread.Sleep(1000 * 2);
        }