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