2016-05-18 3 views
0

Voici mon serveurC# Socket TCP Client refuse connexion

Lorsque vous utilisez plusieurs ports différents outils de vérification sur Internet, je reçois des connexions sur mon serveur, ce qui démontre que mes ports sont ouverts

http://www.infobyip.com/tcpportchecker.php

http://www.yougetsignal.com/tools/open-ports/

http://ping.eu/port-chk/

http://ping.eu/port-chk/

Multiple successful connections

static void Main(string[] args) 
{ 
    IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); 
    IPAddress ipAddress = ipHostInfo.AddressList[0]; 
    IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10897); 
    Console.WriteLine("Server Start"); 

    Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
    listener.Bind(localEndPoint); 
    listener.Listen(10); 
    while (true) 
    { 
     Console.WriteLine("Waiting for a connection..."); 
     Socket handler = listener.Accept(); 
     Console.WriteLine(handler.RemoteEndPoint); 
     handler.Shutdown(SocketShutdown.Both); 
     handler.Close(); 
    } 
} 

Voici mon code client

static void Main(string[] args) 
{ 
    IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY IP HERE"), 10897); 
    Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
    server.Connect(ip); 
} 

Je reçois ce à chaque fois d'erreur, je l'ai essayé plusieurs différentes tentatives du côté client à l'aide System.Net.Sockets.TcpClient et prises et chaque fois que je reçois une connexion refusée, il semble que ce soit un problème avec mon client, car mon serveur reçoit les connexions des contrôleurs de port Error

J'ai lu des dizaines d'autres sujets de socket, mais tous les problèmes ont à voir avec le serveur et non le client, je ne sais pas ce qui ne va pas quelqu'un peut-il m'aider?

EDIT: je peux connecter via localhost (127.0.0.1) mais pas de mon IP publique

+0

Il est dit que le serveur refuse activement la connexion. Cela signifie que le PC serveur reçoit la demande de connexion et la rejette avant qu'elle n'atteigne le niveau de l'application. Ça sent comme un problème de pare-feu. Je sais que vous avez dit que vous avez vérifié avec ces applications en ligne, mais je suggère de désactiver complètement tout pare-feu et antivirus que vous avez, puis relancez votre test. Si vous obtenez une connexion, vous savez que ce n'est pas votre code et peut résoudre le problème de configuration. –

+0

@William Morrison mon pare-feu est désactivé et je n'ai pas d'anti-virus – Swololol

+0

Puis peut-être le problème est au niveau du réseau (redirection de port, ou un pare-feu sur un modem/routeur.) Essayez filsharking votre serveur et vérifiez si vous recevez réellement le message TCP SYN s'il vous plait? –

Répondre

0

Le code fonctionne très bien (les deux premières lignes de votre serveur ne rien faire). Vous avez un problème de pare-feu ou de routage.

0

Il semble que la question était mon routeur avait un certain paramètre qui fait en sorte qu'il ne serait pas accepter les connexions internes à l'IP externe, j'avais mon ami courir le code client et connecté bien

0

Il a quelque chose à faire avec l'exception du pare-feu Windows. Lors de la première exécution, vous devriez être invité à autoriser la connexion. Si vous l'autorisez la première fois, l'exception est créée dans le pare-feu. Peut-être que vous l'avez nié. Essayez également d'élever les privilèges requis pour votre application via app.manifest