2010-06-17 2 views
0

Je suis en train d'écrire un simple client et serveur C# tcp. Le serveur sera éventuellement sur une machine différente mais maintenant je ne fais que tester sur la même machine. Je reçois une erreur d'exception "Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est normalement autorisée" lorsque je crée mon TcpClient en utilisant l'adresse IP. Mais cela fonctionne si j'utilise "localhost" au lieu de l'adresse IP. Je reçois l'adresse IP d'ipconfig. J'essaie également de faire fonctionner le serveur sur une machine différente et mon TcpClient obtient la même exception quand je spécifie l'adresse IP de la machine distante. Comment puis-je établir la connexion en utilisant l'adresse IP? Merci.Je reçois une exception lorsque mon client tcp se connecte au serveur avec l'adresse IP, mais fonctionne avec "localhost"

est Ci-dessous le code où je crée le TcpClient

  IPAddress ipaddr = IPAddress.Parse("192.168.128.100"); 
      int port = 3000; 


      int tries = 0; 
      client = null; 
      while (tries < 6) // try for 3 seconds 
      { 
       try 
       { 
        tries++; 
        IPEndPoint ipEndpt = new IPEndPoint(ipaddr, port); 
        client = new TcpClient(ipEndpt); 
       } 
       catch (Exception ex) 
       { 
        client = null; 
        Thread.Sleep(500); 
       } 
      } 
+0

aussi, un peu de code, il vous aidera. – KevinDTimm

+0

oui..merci c'était le problème. Je devrais appeler Connect et passer dans le serveur IPEndPoint au lieu de passer au constructeur TcpClient – queandans

+0

désolé, je viens de voir que j'ai commenté au lieu de répondu. – KevinDTimm

Répondre

0

lorsque vous créez client tcp, êtes-vous Définition d'un port? Si oui, vous ne devriez pas. à la place, vous vous connecterez au port du serveur.

+0

En fait, vous devez spécifier un port lors de la création d'un 'TcpClient'. Cependant, ce que vous ne devez pas faire est de spécifier le port (pour le 'IPEndPoint 'utilisé pour instancier le' TcpClient') auquel vous allez vous connecter (lors de la connexion à un service sur la machine hôte locale). Ainsi, si vous souhaitez établir une connexion Telnet sur votre propre machine locale, l'adresse de point de terminaison 'TcpClient' doit être n'importe quel port autre que 23. Ensuite, connectez-vous à votre adresse IP locale sur le port 23 pour lancer la connexion Telnet. Mais ta réponse m'a orienté dans la bonne direction, alors merci !! – fourpastmidnight

0

Il y a probablement un autre service d'écoute sur l'interface sur ce port.

Vous devriez essayer

netstat -oan 

et recherche pour le port 3000. Si vous avez trouvé une ligne dans le résultat du dernier fichier est le pid du processus que vous pouvez également trouver dans le taskmanager.

TCP 192.168.128.100:3000   0.0.0.0:0    LISTEN   4711 

4711 = PID

Questions connexes