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); } } }
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); } }
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); } }