Beispiel #1
0
        public static void Main(string[] args)
        {
            EventStore.AddNewEvent(new Core.Event.LoopSendingUDP(OnLoopSedingUDP));
            EventStore.AddNewEvent(new Core.Event.Authtcation(onAtho));
            EventStore.AddNewEvent(new Core.Event.Broadcast(Brodcast));


            Server.ZoneWorking.Add(new ServerGame.Core.Zone.Lobby());
            ServerGame.Program.Room.RoomMaster.init();

            //  Server.RoomWorking.Add()

            Console.ForegroundColor = ConsoleColor.White;
            while (true)
            {
                Console.Write("Server#: ");
                var consoleRead = Console.ReadLine();
                if (consoleRead.Trim().TrimStart().TrimEnd().Length != 0)
                {
                    var ff = CommandLine.Parser.Default.ParseArguments <
                        startServer,
                        ShowAllConnctions,
                        Exit, sendstring
                        >
                                 (consoleRead.Split(' ')

                                 );
                    ff.MapResult(
                        (startServer opts) => RunServerAndReturnExitCode(opts),
                        (ShowAllConnctions opts) => RunShowAllConnctionsAndReturnExitCode(opts),
                        (Exit opts) => RunExitReturnExitCode(opts),
                        (sendstring opts) => RunSendReturnExitCode(opts),
                        ((errs) => HandleParseError(errs))
                        );
                    System.GC.Collect();
                }
            }
        }
Beispiel #2
0
        private static void StartClient()
        {
            EventStore.AddNewEvent(new ServerGame.Core.Event.LoopSendingUDP(OnLoopSedingUDP));

            EventStore.AddNewEvent(new ServerGame.Core.Event.Authtcation(OnAuthtcation));
            EventStore.AddNewEvent(new ServerGame.Core.Event.ConvertConnctionToNewServeerPort(OnConvertConnctionToNewServeerPort));
            EventStore.AddNewEvent(new ServerGame.Core.Event.Broadcast(OnBroadcast));

            Console.WriteLine("Please Enter IP(if not is same machen name) : ");
            ip = Console.ReadLine();
            if (ip == "")
            {
                ip = Dns.GetHostName();
            }

            var _tcp = true;

            Console.WriteLine("Please Enter false or 0 or press enter if use udp : ");
            var ss = Console.ReadLine();

            if (ss == "0" || ss == "false" || ss == "")
            {
                _tcp = false;
            }
            if (_tcp)
            {
                Console.WriteLine("enter port number deflut is : " + porttcp.ToString());
                var _port = Console.ReadLine();
                if (_port != "")
                {
                    port = Convert.ToInt32(_port);
                }
                else
                {
                    port = porttcp;
                }
            }
            else
            {
                Console.WriteLine("Please Enter port(if not,is 9998) : ");
                var _port = Console.ReadLine();
                if (_port != "")
                {
                    port = Convert.ToInt32(_port);
                }
                else
                {
                    port = portudp;
                }
            }
            try
            {
                if (_tcp)
                {
                    IPHostEntry ipHostInfo = Dns.GetHostEntry(ip);//Dns.GetHostEntry("net.super-bots.com");
                    IPAddress   ipAddress  = ipHostInfo.AddressList[ipHostInfo.AddressList.Length - 1];
                    IPEndPoint  remoteEP   = new IPEndPoint(ipAddress, port);

                    // Create a TCP/IP socket.
                    Socket client = new Socket(ipAddress.AddressFamily,
                                               SocketType.Stream, ProtocolType.Tcp);


                    client.BeginConnect(remoteEP,
                                        new AsyncCallback(ConnectCallback), client);
                    connectDone.WaitOne();
                    if (client.Connected == false)
                    {
                        return;
                    }

                    Task.Run(() =>
                    {
                        while (true)
                        {
                            receiveDone.Reset();
                            Receive(client);
                            receiveDone.WaitOne();

                            Console.WriteLine("Response received : {0}", response);
                        }
                    });

                    PackSendData data     = null;
                    List <Data>  datalist = null;
                    while (true)
                    {
                        var readline = Console.ReadLine();

                        if (readline == "close")
                        {
                            break;
                        }

                        if (readline.Split(' ')[0].Trim() == "loop") // loop 500 20 mohmmadmaskdmqkmfwemgflwjnemgljnwejgjwhnglkwe
                        {
                            var manytime        = Convert.ToInt32(readline.Split(' ')[1]);
                            var sleeptimeMilSec = Convert.ToInt32(readline.Split(' ')[2]);
                            var world           = "";

                            for (int i = 3; i < readline.Split(' ').Length; i++)
                            {
                                world += " " + readline.Split(' ')[i];
                            }

                            while (manytime > 0)
                            {
                                sendDone.Reset();
                                datalist = new List <Data>();
                                datalist.Add(new Data(manytime.ToString() + world, (byte)DataType.String));

                                data = new PackSendData(1, datalist);
                                Send(client, ServerGame.Core.Serialize.Serialize.serialize(data));
                                sendDone.WaitOne();

                                manytime--;
                                Thread.Sleep(sleeptimeMilSec);
                            }
                        }
                        else if (readline.Split(' ')[0].Trim() == "event")  // loop 500 20 mohmmadmaskdmqkmfwemgflwjnemgljnwejgjwhnglkwe
                        {
                            var datasnding  = readline.Split(' ');
                            var numberevnet = Convert.ToInt32(datasnding[1]);
                            var world       = "";

                            for (int i = 2; i < readline.Split(' ').Length; i++)
                            {
                                world += " " + readline.Split(' ')[i];
                            }
                            switch (numberevnet)
                            {
                            case 1:
                                datalist = new List <Data>();
                                datalist.Add(new Data(datasnding[2], 0));
                                datalist.Add(new Data(datasnding[3], 1));
                                datalist.Add(new Data(datasnding[4], 2));
                                datalist.Add(new Data(datasnding[5], 3));
                                data = new PackSendData(1, datalist);
                                Send(client, ServerGame.Core.Serialize.Serialize.serialize(data));
                                break;

                            case 2:
                                datalist = new List <Data>();
                                datalist.Add(new Data(world, 0));
                                data = new PackSendData(2, datalist);
                                Send(client, ServerGame.Core.Serialize.Serialize.serialize(data));
                                break;

                            default:
                                break;
                            }
                        }
                        datalist = new List <Data>();
                        datalist.Add(new Data(readline, (byte)DataType.String));
                        data = new PackSendData(0, datalist);

                        Send(client, ServerGame.Core.Serialize.Serialize.serialize(data));
                        sendDone.WaitOne();
                    }
                    // Release the socket.
                    client.Shutdown(SocketShutdown.Both);
                    client.Close();
                }
                else
                {
                    startRciverUDP();

                    while (true)
                    {
                        var readline = Console.ReadLine();

                        if (readline == "stop")
                        {
                            break;
                        }
                        List <Data>  datalist = null;
                        PackSendData data     = null;

                        if (readline.Split(' ')[0].Trim() == "event")
                        {
                            var datasnding  = readline.Split(' ');
                            var numberevnet = Convert.ToInt32(datasnding[1]);
                            var world       = "";

                            for (int i = 2; i < readline.Split(' ').Length; i++)
                            {
                                world += " " + readline.Split(' ')[i];
                            }
                            switch (numberevnet)
                            {
                            case 1:
                                datalist = new List <Data>();
                                datalist.Add(new Data(datasnding[2], 0));
                                datalist.Add(new Data(datasnding[3], 1));
                                datalist.Add(new Data(datasnding[4], 2));
                                datalist.Add(new Data(datasnding[5], 3));
                                data = new PackSendData(1, datalist);
                                startSendUDP(data);
                                break;

                            case 2:
                                datalist = new List <Data>();
                                datalist.Add(new Data(world, 0));
                                data = new PackSendData(2, datalist);
                                startSendUDP(data);
                                break;

                            default:
                                break;
                            }
                        }
                        else if (readline.Split(' ')[0].Trim() == "loop")
                        {
                            var manytime        = Convert.ToInt32(readline.Split(' ')[1]);
                            var sleeptimeMilSec = Convert.ToInt32(readline.Split(' ')[2]);
                            var world           = "";

                            for (int i = 3; i < readline.Split(' ').Length; i++)
                            {
                                world += " " + readline.Split(' ')[i];
                            }



                            while (manytime > 0)
                            {
                                sendDone.Reset();
                                datalist = new List <Data>();
                                datalist.Add(new Data(manytime.ToString() + world, (byte)DataType.String));

                                data = new PackSendData(0, datalist);
                                startSendUDP(data);
                                sendDone.WaitOne();

                                manytime--;
                                Thread.Sleep(sleeptimeMilSec);
                            }
                        }
                        else
                        {
                            datalist = new List <Data>();
                            datalist.Add(new Data(readline, 0));

                            data = new PackSendData(0, datalist);

                            startSendUDP(data);
                        }
                    }
                }
            }


            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }