Ho creato un piccolissimo programma che da la possibilita di inviare una stringa via connessione tcp. In locale funziona il problema si crea quando tento di connettermi usando l'ip publico e mi da "Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione 87.17.XXX.XXX:25565"
come posso risolvere ecco il codice


Client

codice:
 
 TcpClient client = null;
        NetworkStream flusso = null;

        public Form1()
        {
            InitializeComponent();
            client = new TcpClient();
            client.Connect("127.0.0.1", 25565);
            flusso = client.GetStream();
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (flusso.DataAvailable)
            {
                byte[] buffer = new byte[client.Available];
                flusso.Read(buffer, 0, client.Available);
                textBox1.Text = Encoding.ASCII.GetString(buffer);
            }
        }
Server

codice:

        TcpListener server = null;
        TcpClient client = null;
        NetworkStream flusso = null;
        public Form1()
        {
            InitializeComponent();
            server = new TcpListener(IPAddress.Parse("127.0.0.1"), 25565);
            server.Start();
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (server.Pending())
            {
                client = server.AcceptTcpClient();
                flusso = client.GetStream();
                timer1.Stop();
            }
        }

        private void inviaBtn_Click(object sender, EventArgs e)
        {
            byte[] testo = Encoding.ASCII.GetBytes(textBox1.Text);
            flusso.Write(testo, 0, testo.Length);
        }