Esempio n. 1
0
            public static async Task <bool> SendNewPlayerRequest(string serverIP)
            {
                Server.Host = new Player(0, null, new IPEndPoint(IPAddress.Parse(serverIP), (int)NetworkConnection.Ports.ServerListener));

                NetworkConnection networkConnection = NetworkConnection.Current;

                using (networkConnection.GetUdp(NetworkConnection.Ports.ClientTalker))
                {
                    await networkConnection.Send("NewPlayerRequest", Server.Host);
                }

                using (networkConnection.GetUdp(NetworkConnection.Ports.ClientListener))
                {
                    Task <UdpReceiveResult> receiveTask = networkConnection.Receive();
                    var resultTask = await Task.WhenAny(receiveTask, Task.Delay(5000));

                    if (resultTask is Task <UdpReceiveResult> )
                    {
                        if (NetworkUtility.Decode((resultTask as Task <UdpReceiveResult>).Result.Buffer) == "NewPlayerReply")
                        {
                            Player = new Player(0, null, null);
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
Esempio n. 2
0
            public static async Task <bool> ListenNewPlayerRequest()
            {
                NetworkConnection networkConnection = NetworkConnection.Current;
                UdpReceiveResult  result;

                using (networkConnection.GetUdp(NetworkConnection.Ports.ServerListener))
                {
                    result = await networkConnection.Receive();
                }

                if (NetworkUtility.Decode(result.Buffer) == "NewPlayerRequest")
                {
                    GameSession.Current.Players.Add(new Player(GameSession.Current.Players.Count, result.RemoteEndPoint, new IPEndPoint(result.RemoteEndPoint.Address, (int)NetworkConnection.Ports.ClientListener)));
                    await Task.Delay(TimeSpan.FromMilliseconds(50));

                    using (networkConnection.GetUdp(NetworkConnection.Ports.ServerTalker))
                    {
                        await networkConnection.Send("NewPlayerReply", GameSession.Current.Players[GameSession.Current.Players.Count - 1]);
                    }

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
Esempio n. 3
0
            public static async Task <bool> ListenStartGameCommand()
            {
                NetworkConnection networkConnection = NetworkConnection.Current;
                UdpReceiveResult  result;

                using (networkConnection.GetUdp(NetworkConnection.Ports.ClientListener))
                {
                    result = await networkConnection.Receive();
                }

                if (NetworkUtility.Decode(result.Buffer) == "StartGameCommand")
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }