Impossible de connecter 2 ordinateur par Tcp

Signaler
Messages postés
32
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
24 août 2008
-
Messages postés
32
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
24 août 2008
-
Bonjour à tous,
J'imagine que cette question (et la reponse) doit etre toute bete mais malgre avoir chercher avec un ami (qui s'appelle google) et sur differents sites je n'arrive toujours pas à resoudre mon probleme.

J'ai d'un côté le serveur qui entre autre fait :

IPAddress localAddr = IPAddress.Parse(iPAddress);
ListenerTcp = new TcpListener(localAddr, port);
ListenerTcp.Start();
// Pointeur asynchrone
IAsyncResult iar = null;
//Attente du prochain message
iar = ListenerTcp.BeginAcceptTcpClient(new AsyncCallback(AcceptTcpClientCallback), this);

Et du coté client on a:

 TcpClient client = new TcpClient(iPAddress, port);
NetworkStream networkStream = client.GetStream();

Mais la création du TcpClient renvoi :"Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée".

Sur les diferents forums que j'ai vu on parle de :
il suffit aparamant de creer une IP via un tableau , et de la donner a la méthode beginaccept .(avec listen avant).

Ou encore de probleme de firewall, or je n'ai que celui d'xp, mon programme fait partis des exceptions et j'ai aussi ajouté un port ouvert.Je n'ai pas non plus de proxy.

Quand j'utilise mon ip interne (192.168.1.57) ca fonctionne bien, mais des que je met l'adresse ip publique (que je trouve generalement sur monip.org) le probleme que je decris ci-dessus apparait.
J'ai une adresse ip dynamique et j'ai une livebox chez Orange.

Quelqu'un pourait t'il m'eclairer pour ce probleme qui doit surement simple car la plupart des personnes qui utilisent les socket y arrivent. Surtout que la source que j'utilise vient d'un site qui a l'air serieux.

Merci à ceux qui s'interessent à ce problème.

@+

6 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
80
Salut,

Si le routeur (ici la LiveBox) ne dispose pas d'une règle lui disant où envoyer les packets (vers la machine 192.168.1.57 en l'occurence) pour le port/protocole, il ne sait quoi en faire et refuse tout simplement la connexion.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
32
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
24 août 2008

Comment faire alors pour dire a la livebox de laisser entrer les packets et de les envoyer a mon application ?
Messages postés
356
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009

J'ajouterais à la réponse de coq :
Il me semble (c'était le cas à une époque pas si lointaine) qie la livebox ne supporte pas une connexion en "Loopback" => quand tu essai de joindre le réseau local depuis une machine interne mais en utilisant l'ip externe (ex : tu as un poste et un serveur dérrière ta livebox, tu cherche à joindre le serveur depuis la poste en utilisant l'ip internet. Même si le routage est configuré correctement sur la livebox elle va systématiquement de jeter)
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
44
Je ne sais pas comment ca se passe sur la livebox, mais tu dois bien avoir une page de l'interface qui te permet de faire du routage de ports non ?

Mx
MVP C# 
Messages postés
32
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
24 août 2008

Merci pour vos réponses, je vais aller voir l'aide de la livebox.
Je vous tient au courant
Messages postés
32
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
24 août 2008

J'ai trouvé comment faire (grâce a vous bien sûr) et ça fonctionne super bien.

A l'intention de ceux qui auraient le même problème, ce n'est pas forcement la meilleure méthode mais elle a le mérite de fonctionner:
Sur votre navigateur internet aller à l'adresse http://192.168.1.1/ (mdp et utilisateur = "admin")
Ensuite allez dans Configuration/Avancée/Routeur ;dans la zone "Routeur - NAT" faites Ajouter. Service: Nom que vous voulez Protocol: TCP (pour moi) Ports interne et externe: celui que vous utilisez dans votre application. Et voila.

Merci à tous pour vos infos très utiles en espérant que ça puisse servir a quelqu'un.

@+