public InitializationResponse ConnectToServer()
        {
            client.Connect(server_endpoint);

            this.private_endpoint = ((IPEndPoint)client.LocalEndPoint).Convert();

            System.Console.WriteLine($"{client.LocalEndPoint}");
            System.Console.WriteLine($"Local endpoint: {private_endpoint.GetAddress()}:{private_endpoint.Port}");

            this.state  = Tcp_State.Initialization;
            this.stream = new NetworkStream(client);

            InitializationRequest info = new InitializationRequest
            {
                ClientId        = id,
                PrivateEndpoint = private_endpoint
            };

            info.WriteDelimitedTo(stream);

            var response = InitializationResponse.Parser.ParseDelimitedFrom(stream);

            this.state = Tcp_State.WithoutLobby;

            return(response);
        }
 public void Log(string str)
 {
     System.Console.WriteLine($"[{id}] {public_endpoint.GetAddress()}:{public_endpoint.Port} | {str}");
 }
 public static System.Net.IPEndPoint Convert(this IPEndPointMessage ep)
 {
     return(new System.Net.IPEndPoint(ep.GetAddress(), ep.Port));
 }