web-dev-qa-db-fra.com

L'adresse demandée n'est pas valide dans son contexte lorsque j'essaie d'écouter un port

J'essaie de me connecter à un capteur en utilisant le réseau, l'IP du capteur est 192.168.2.44 sur le port 3000;

Mon code:

byte[] byteReadStream = null; // holds the data in byte buffer
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.2.44"), 3000);//listen on all local addresses and 8888 port
TcpListener tcpl = new TcpListener(ipe);
while (true)
{
    //infinite loop
    tcpl.Start(); // block application until data and connection
    TcpClient tcpc = tcpl.AcceptTcpClient();
    byteReadStream = new byte[tcpc.Available]; //allocate space
    tcpc.GetStream().Read(byteReadStream, 0, tcpc.Available);
    Console.WriteLine(Encoding.Default.GetString(byteReadStream) + "\n");
}

enter image description here

Mais quand j'exécute ce code, j'ai cette erreur:

L'adresse demandée n'est pas valide dans son contexte

7
Ehsan Akbar

Utilisation IPAddress.Any écouter. Cela semble être votre objectif:

//listen on all local addresses

L'adresse d'écoute que vous avez spécifiée n'est pas valide pour une raison quelconque. Il n'est pas nécessaire de spécifier une adresse numérique.

17
usr

TcpListener écoute les connexions depuis TCP client réseau, sur un port donné sur votre machine locale Autrement dit, pour les connexions entrantes . Votre code agira en quelque sorte comme un "serveur".

L'adresse demandée n'est pas valide dans son contexte

Cela signifie simplement que l'adresse IP donnée n'est utilisée par aucune interface réseau de votre machine.

Utilisation IPAddress.Any pour écouter sur n'importe quelle adresse IP (c'est-à-dire interface réseau).

Cependant, il se peut que vous deviez vous connecter au capteur (sur le port 3000), et non l'inverse.

EDIT: La nouvelle exception vous indique simplement que deux applications essaient d'écouter la même combinaison interface/port. Avez-vous deux instances en cours d'exécution en même temps?

8
Micke