8
votes

Impossible de se connecter de la machine distante

J'ai une sorte de problème et je ne peux pas vérifier cela à la maison si son fonctionnement ou non. Voici le code

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Net.Security;

class Program
{
    private static IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
    private static int port = 6000;
    private static string data = null;

    static void Main(string[] args)
    {
        Thread thread = new Thread(new ThreadStart(receiveThread));
        thread.Start();
        Console.ReadKey();
    }

    public static void receiveThread()
    {
        while (true)
        {
            TcpListener tcpListener = new TcpListener(ipAddress, port);
            tcpListener.Start();

            Console.WriteLine("Waiting for connection...");

            TcpClient tcpClient = tcpListener.AcceptTcpClient();

            Console.WriteLine("Connected with {0}", tcpClient.Client.RemoteEndPoint);

            while (!(tcpClient.Client.Poll(20, SelectMode.SelectRead)))
            {
                NetworkStream networkStream = tcpClient.GetStream();
                StreamReader streamReader = new StreamReader(networkStream);

                data = streamReader.ReadLine();

                if(data != null)
                    Console.WriteLine("Received message: {0}", data);
            }
            Console.WriteLine("Dissconnected...\n");
            tcpListener.Stop();
        }
    }
}


0 commentaires

4 Réponses :


1
votes

Je pense que c'est votre ordinateur (le serveur) qui refuse de se connecter car 127.0.0.1 est local (-Only).

Essayez cette surcharge simple: xxx


2 commentaires

On dit que cette méthode a été obsolète. J'ai utilisé une adresse IP locale depuis que je suis à l'écoute sur mon ordinateur pour une connexion entrante. Je pense que cela devrait fonctionner tel quel ou je me trompe?


127001 n'est que votre PC de ce PC lui-même. Vous devez écouter une adresse IP visible de manière externe, SE IPDDRESS.ANY RÉPONSES.



4
votes

Vous écoutez le 127.0.0.1 qui est l'adresse de bouclage qui est une adresse spéciale qui signifie «cet ordinateur». Cela signifie que vous n'accepterez que les connexions effectuées sur la même machine que le serveur fonctionnent.

Vous devez écouter sur un (ou plus) des adresses IP réelles du serveur.


2 commentaires

Je devrais donc utiliser IP "mon Internet" pour écouter des connexions entrantes?


Vous pouvez utiliser iPaddress.any pour écouter toutes vos interfaces ou l'adresse d'une interface particulière pour écouter uniquement sur cette interface. Si vous avez besoin d'écouter plusieurs de vos interfaces mais que vous n'avez pas tous besoin d'un auditeur par adresse.



3
votes

Votre problème est que le paramétrage d'une adresse IP explicitement lorsque vous initialisez le TCplistener ne lui permettra d'accepter les connexions de cette adresse forte>. Par conséquent, la mise en place de l'adresse locale de 127.0.0.1 n'acceptera que les connexions provenant de votre PC.

La mise en œuvre que vous souhaitez utiliser est la suivante: P>

TcpListener tcpListener = new TcpListener(IPAddress.Any, port);


0 commentaires

13
votes

Vous devez la définir pour accepter les connexions à partir d'une adresse IP, il existe une fonction de surcharge ipaddress pour cela: xxx

l'utiliser au lieu de 127.0.0.1 et cela corrigera votre problème. < / p>


0 commentaires