Erreur sur le serveur [Résolu]

cs_elnk 49 Messages postés jeudi 8 novembre 2007Date d'inscription 23 mai 2010 Dernière intervention - 16 mai 2010 à 12:19 - Dernière réponse : cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention
- 16 mai 2010 à 22:28
Bonjour, j'ai un serveur en application console qui fonctionne très bien ( cad le client se connecte bien ) à lui en local avec, les adresses type 192.168.x.x mais lorsque j essai de faire tourner(débogage) le serveur sur mon ip publique ca ne marche plus :/

Voici le code :


Console.WriteLine("Initialisation du serveur");
try
{
                // Ip publique :
                Uri url = new Uri("siteoujerecuperemonippublique");
                WebClient client = new WebClient();
                string ipAdressInternet = client.DownloadString(url);


IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
localAddress = IPAddress.Parse(ipHost.AddressList[0].ToString()); //ipHost.AddressList[0];
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
threadListener = new Thread(new ThreadStart(ListenToClient));
                listener = new TcpListener(new IPEndPoint(localAddress, 999));
return true;


Concrètement il faudrait mettre ipAdressInternet à la place de localAdresse dans la ligne :

ThreadStart(ListenToClient));
listener = new TcpListener(new IPEndPoint(localAddress, 999));

mais ipAdresseInternet n'est pas de type IPAdresse alors je crois que c'est pour ca que ca ne marche pas mais je ne sais pas comment convertir mon ipAdressInternet qui est en string en IPAdresse :/

Si vous pouviez m'aider svp

Merci
Afficher la suite 

6 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 mai 2010 à 22:28
+3
Utile
Renvoyer ce qui rentre d'internet sur un port vers le réseau local sur un autre port (ou le même) sans spécifier l'adresse, faut voir au niveau du routeur les possibilités de configuration, mais ça doit être possible.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_elnk 49 Messages postés jeudi 8 novembre 2007Date d'inscription 23 mai 2010 Dernière intervention - 16 mai 2010 à 12:28
0
Utile
En fait si je rentre mon adresse publique en dur ca ne marche pas non plus :( j'ai une erreur au niveau de :

listner.start();

je ne vois pas du tout comment faire je suis bloquer dans mon application :(
Commenter la réponse de cs_elnk
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 mai 2010 à 13:57
0
Utile
le TCPListener n'écoutera jamais que sur la(es) adresse(s) locale(s) de la machine qui l'exécute.
Il n'est d'ailleurs pas nécessaire de préciser cette adresse. Ce n'est utile que lorsque tu possède, sur la machine qui fait serveur, plusieurs connexion réseau et que tu veux spécifier l'écoute sur une seule adresse bien précise.
Sinon, tu met le paramètre IPAddress.Any pour écouter sur toutes les cartes réseaux de ton serveur.

Ton problème se situe ailleurs. Ton serveur écoutera bien sur son ou ses adresses locales. Tes clients (hors réseau local) se connecteront bien, eux, sur ton adresse Internet publique.

Entre les 2, il te faut configurer ton routeur (ou ta box, si c'est elle qui fait routeur) pour que les connections entrantes, c'est à dire venant d'internet (ou au minimum celles sur le port spécifié) soient redirigé vers la machine qui héberge ton serveur sur ton réseau local


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
cs_elnk 49 Messages postés jeudi 8 novembre 2007Date d'inscription 23 mai 2010 Dernière intervention - 16 mai 2010 à 16:00
0
Utile
Ah! d'accord casy merci de ta réponse :)
Donc si j'ai bien compris, j'ai donc mon serveur chez moi sur mon pc qui écoute sur mon ip local, et mon client là en l'occurrence, dans ma maison de vacances je vais envoyer vers l ip publique où se trouve mon serveur!

Mais dans ce cas mise à part la configuration de mon router est-ce que je peux faire en sorte que mon serveur reçoive les sockets de mon client ?

Ça m'éviterai de configurer le router à chaque fois que je dois installer mon serveur quelque part :/

Merci,
Commenter la réponse de cs_elnk
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 mai 2010 à 16:26
0
Utile
c'est le routeur coté serveur que tu dois configuré. A partir du moment ou le serveur ne change pas de place, il n'y a pas lieu de reconfigurer le routeur.

Si par contre tu change le serveur de lieu, il faudra bien évidemment configurer le nouveau routeur derrière lequel il se trouvera.


Sauf exception, si ta box est configurée comme simple modem et donc à ce moment ton pc est directement relié à internet. Il n'y a pas de routeur dans ce cas là.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
cs_elnk 49 Messages postés jeudi 8 novembre 2007Date d'inscription 23 mai 2010 Dernière intervention - 16 mai 2010 à 22:13
0
Utile
Oui, mais il n'y aurai pas un autre moyen ?
Par exemple si avec mon client j'envoie une socket sur l'ip publique, et qu'ensuite elle soit envoyer a tout les interfaces réseaux connecté au routeur ?
C'est à dire que du coup elle capterai seulement sur celle ou l'ip privé aurai le port adequat ?

Ou quelque chose qui m'éviterai de me depacer non ?
Commenter la réponse de cs_elnk

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.