public async Task ConnectToRemoteUser(string remoteIpAddress, int remotePortNumber) { Console.WriteLine("STATUS: Connecting to remote user"); State = ConnectionState.Connecting; Sender = await NetworkService.ConnectToRemoteAsync(Sender, remoteIpAddress, remotePortNumber); if (Sender != null) { Console.WriteLine($"RESULT: Connection to {((IPEndPoint)Sender.RemoteEndPoint).Address} established"); } else { Console.WriteLine("RESULT: Connection to remote failed"); Sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); State = ConnectionState.Listening; InfoDisplay.Show("Could not connect to user"); return; } Console.WriteLine("STATUS: Sending request data to remote user"); NetworkData request = new NetworkData(LocalUser, NetworkDataType.Request); bool sent = await NetworkService.SendDataAsync(Sender, request); if (sent) { Console.WriteLine("RESULT: Sending of request data successful"); } else { Console.WriteLine("RESULT: Sending of request data failed"); Sender.Shutdown(SocketShutdown.Both); InfoDisplay.Show("Could not send request to user"); State = ConnectionState.Listening; } }