コード例 #1
0
        public void HandleRequest(object insock)
        {
            Socket s = (Socket)insock;

            byte[] buffer;
            int    readBytes;

            buffer    = new byte[s.SendBufferSize];
            readBytes = s.Receive(buffer);

            if (readBytes > 0) // assume all is read at once
            {
                string messageString = Encoding.ASCII.GetString(buffer);
                //Console.WriteLine("Thread: {0}, ListenerInfo: LEP: {1}, REP: {2}", Thread.CurrentThread.ManagedThreadId, listener.LocalEndPoint, listener.RemoteEndPoint);
                Console.WriteLine("Thread: {0}, LEP: {1}, REP: {2}", Thread.CurrentThread.ManagedThreadId, s.LocalEndPoint, s.RemoteEndPoint);

                Message tempMessage = MessageProject.Message.xmlIntoMessage(messageString);
                Type    typer       = tempMessage.GetType();
                dynamic newMessage  = Convert.ChangeType(tempMessage, typer);
                Console.WriteLine(newMessage.GetType().ToString());

                RegisterGame mes = (RegisterGame)newMessage;
                Console.WriteLine("GameID: {0}, PlayersBlue: {1}, PlayersRed: {2}", mes.gameID, mes.blueTeamPlayers.ToString(), mes.redTeamPlayers.ToString());
                ConfirmGameRegistration gameConfirmation = new ConfirmGameRegistration(mes.gameID);
                string respStr = MessageProject.Message.messageIntoXML(gameConfirmation);
                Console.WriteLine("Response type: {0}", gameConfirmation.GetType());

                byte[] response = Encoding.ASCII.GetBytes(respStr);
                s.Send(response);
            }
            Thread.Sleep(10000);
        }
        public static void HandleMessage(RegisterGame request, CommunicationServer server, Socket handler)
        {
            if (request == null)
            {
                return;
            }

            Game.Game g;

            lock (joinLock)
            {
                g = new Game.Game(gameId: server.RegisteredGames.NextGameId(), name: request.NewGameInfo.gameName,
                                  bluePlayers: request.NewGameInfo.blueTeamPlayers,
                                  redPlayers: request.NewGameInfo.redTeamPlayers, gameMaster: handler
                                  );
                try
                {
                    server.RegisteredGames.RegisterGame(g);
                }
                catch
                {
                    return;
                }
            }

            ConfirmGameRegistration gameRegistration = new ConfirmGameRegistration()
            {
                gameId = (ulong)g.Id
            };

            var response = XmlMessageConverter.ToXml(gameRegistration);

            server.ConnectionEndpoint.SendFromServer(handler, response);
        }
        public void ConfirmGameRegistrationTest()
        {
            ConfirmGameRegistration confirmGameRegistration = new ConfirmGameRegistration();


            confirmGameRegistration.gameId = 4;

            string xml = XmlMessageConverter.ToXml(confirmGameRegistration);
            ConfirmGameRegistration result = (ConfirmGameRegistration)XmlMessageConverter.ToObject(xml);

            Assert.AreEqual((ulong)4, result.gameId);
        }
        public void HandleMessage_ConfirmGameRegistration_NewGameId()
        {
            GameMaster.Net.Game game = new GameMaster.Net.Game();
            var gm = newGameMaster(game);

            var message = new ConfirmGameRegistration
            {
                gameId = 4
            };

            gm.MessageHandler.HandleMessage(message, new Socket(new SocketType(), new ProtocolType()));

            Assert.AreEqual((ulong)4, game.gameId);
        }
コード例 #5
0
 public void HandleMessage(ConfirmGameRegistration message, Socket handler)
 {
     ConsoleDebug.Good("I get gameId = " + message.gameId);
     gameId = message.gameId;
 }
コード例 #6
0
ファイル: Server.cs プロジェクト: piotrekradomski/SE
        public static void DataManager(string xml, ClientData client)
        {
            Message temp = Message.xmlIntoMessage(xml);
            dynamic msg  = Convert.ChangeType(temp, temp.GetType());

            switch (typeDict[msg.GetType()])
            {
            case 0:

                break;

            case 1:

                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string confirmJoining     = Message.messageIntoXML(msg);
                        byte[] sendConfirmJoining = Encoding.ASCII.GetBytes(confirmJoining);
                        c.clientSocket.Send(sendConfirmJoining);
                    }
                }

                break;

            case 2:
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string reject     = Message.messageIntoXML(msg);
                        byte[] sendReject = Encoding.ASCII.GetBytes(reject);
                        c.clientSocket.Send(sendReject);
                    }
                }
                break;

            case 3:

                client.id    = counter;
                msg.playerID = counter;
                counter++;

                string join     = Message.messageIntoXML(msg);
                byte[] sendJoin = Encoding.ASCII.GetBytes(join);
                try
                {
                    gmSocket.Send(sendJoin);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                }


                break;

            case 4:
                string game     = Message.messageIntoXML(msg);
                byte[] sendGame = Encoding.ASCII.GetBytes(game);
                Console.WriteLine();
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        Console.WriteLine("Received GameMessage! Sending to playerID: {0}", msg.playerID);
                        c.clientSocket.Send(sendGame);
                    }
                }

                break;

            case 5:
                GameInfo info = new GameInfo(msg.gameID, msg.blueTeamPlayers, msg.redTeamPlayers);
                gameList.Add(info);
                int id = msg.gameID;
                gmID      = counter;
                client.id = counter;
                gmSocket  = client.clientSocket;
                counter++;

                ConfirmGameRegistration confirmation = new ConfirmGameRegistration(id);
                string conf = Message.messageIntoXML(confirmation);

                byte[] toSend = Encoding.ASCII.GetBytes(conf);
                client.clientSocket.Send(toSend);
                break;

            case 6:
                RegisteredGames registered     = new RegisteredGames(gameList);
                string          registeredSend = Message.messageIntoXML(registered);

                byte[] registeredToSend = Encoding.ASCII.GetBytes(registeredSend);
                client.clientSocket.Send(registeredToSend);
                break;

            case 8:
                string move     = Message.messageIntoXML(msg);
                byte[] sendMove = Encoding.ASCII.GetBytes(move);
                try
                {
                    gmSocket.Send(sendMove);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                }
                break;

            case 9:
                Console.WriteLine("Response from GM");
                foreach (ClientData c in clients)
                {
                    if (c.id == msg.playerID)
                    {
                        string movementResponse     = Message.messageIntoXML(msg);
                        byte[] sendmovementResponse = Encoding.ASCII.GetBytes(movementResponse);
                        c.clientSocket.Send(sendmovementResponse);
                    }
                }
                break;

            default:
                Console.Write("dostalem cos");
                byte[] sendEmpty = Encoding.ASCII.GetBytes("");
                client.clientSocket.Send(sendEmpty);
                break;
            }
        }