[C#] [TCPClient] Connexion à distance [Résolu]

mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 26 juil. 2006 à 23:58 - Dernière réponse : MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 13:12
Bonjour,
J'utilise les sockets pour me connecter à un serveur.

Dans le client j'utilise la ligne

clientsocket = new TcpClient("11.11.11.11", port);   (11.11.11.11 est en fait mon adresse IP publique)

Pourtant je n'arrive pas à créer de connection avec mon host (qui est bien en écoute sur le port)

Si je remplace cette adresse par le localhost 127.0.0.1, ca fonctionne parfaitement.

Si je remplace cette adresse par  mon IP locale (192.168.0.2), j'obtiens une erreur comme quoi la connection à été expressement refusée...

Le client et le serveur tournent sur la même machine, le problème survient aussi sur deux machines séparées.

Auriez vous une idée de ce qui ne va pas ?

Merci
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 13:02
3
Merci
Ce n'est pas ton IP publique qu'il faut mettre, mais l'IP de ton ordi sur ton reseau local (et donc tu peux tout a fait la mettre sur le forum, on pourra rien en faire de celle la)


Si ton serveur a une addresse privée de classe C (192.168.x.x), alors c'est celle la qu'il faut mettre.


Ensuite, pour ton connecter au serveur :
-Depuis ton reseau local, tu peux soit dire a ton client de se connecter a cette adresse privée de classe C (et cela ne necessite aucune configuration au niveau du routeur), ou alors depuis ton IP connectée (celle de ton routeur), et la il suffit juste de router le port vers ton serveur.
-Et pour se connecter depuis le net, il n'y a que la seconde option qui marche (logique)





Mx
MVP C#
 

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de MorpionMx
cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 27 juil. 2006 à 08:40
0
Merci
Salut,

As tu vérifier que le serveur écoute les connexions sur les autres interfaces et pas uniquement le localhost ?
Le firewall ?

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 09:48
0
Merci
Lorsque je fais un netstat, je vois bien le port en listening.
Je sais que j'utilisais le remoting sur ce port.
Je dis bien j'utilisais car j'ai changé de port pour pouvoir l'utiliser pour les sockets.
Donc en principe ce port est ouvert sur le routeur et le firewall?

Comment verifier?
Commenter la réponse de mecano14
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 10:49
0
Merci
"As tu vérifier que le serveur écoute les connexions sur les autres interfaces et pas uniquement le localhost ?"

Comment verifier ça?? Je n'ai qu'une seule carte reseau branchée sur mon routeur. Il n'y a qu'une interface non? (mes notions de reseau sont quasi nulles alors desolé :p)
Commenter la réponse de mecano14
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 10:56
0
Merci
A premiere vue j'aurais dit de regarder si le port était bien routé, mais apparement c'est le cas.
Tu es sur que le serveur est bien démarré ? (genre une exception que tu catch mais que tu loggerais pas, ...)

Tu appelles bien les méthodes Start() et AcceptSocket() de ton TCPListener ?

Mx
MVP C# 
Commenter la réponse de MorpionMx
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 11:52
0
Merci
Lorsque mon client est configuré en local ca fonctionne bien, donc le serveur est bien demarré.
Au fait, je demarre mon serveur en 127.0.0.1, est-ce correct?

Sinon pour Start() et AcceptSocket() c'est bon (ils sont bien dans mon code).


 
Commenter la réponse de mecano14
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 12:01
0
Merci
Ah bah non, ce n'est pas correct
Il faut demarrer ton serveur avec ton ip locale (celle derriere le routeur)

Mx
MVP C# 
Commenter la réponse de MorpionMx
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 12:41
0
Merci
En utilisant cette adresse, j'obtiens l'erreur suivante sur le serveur :

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

J'utilise :

IPEndPoint ipServerEndPoint = new IPEndPoint(IPAddress.Parse("11.11.11.11"), port);
  
socket_ecoute = new TcpListener(ipServerEndPoint);

socket_ecoute.Start();

L'erreur survient sur le Start()
Commenter la réponse de mecano14
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 12:51
0
Merci
Normalement, c'est parce que tu mets pas la bonne adresse.  C'est reellement l'adresse de ton interface reseau ?
11.11.11.11, c'est une adresse connectée, pas une adresse privée, si je me trompe pas.
Ton serveur est derriere un routeur, ou est connecté directement au net ?

Mx
MVP C# 
Commenter la réponse de MorpionMx
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 12:56
0
Merci
Je met 11.11.11.11 parce que je ne veux pas balancer mon IP publique comme ça sur le forum :D

Avec mon adresse publique, j'arrive à faire fonctionner le .net remoting donc je pense qu'elle devrait fonctionner aussi pour les sockets non?

Mon serveur est derrière un routeur et le port est bien ouvert.
La j'avoue que je bloque ...
Commenter la réponse de mecano14
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 13:10
0
Merci
Bien joué!
J'ai mis 192.168.0.2 sur mon routeur et maintenant je m'y connecte avec mon client via le net
Commenter la réponse de mecano14
mecano14
Messages postés
35
Date d'inscription
samedi 26 février 2005
Dernière intervention
12 août 2006
- 27 juil. 2006 à 13:11
0
Merci
Pas sur mon routeur, sur mon serveur :)
Commenter la réponse de mecano14
MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
- 27 juil. 2006 à 13:12
0
Merci
Et voila :)
Bonne continuation

Mx
MVP C# 
Commenter la réponse de MorpionMx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.