Question sur les Hostnames et réseaux privés

Signaler
Messages postés
6
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
8 novembre 2006
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
J'explique mon souci:

J'ai une application qui doit tourner en multicast.

Mon serveur se trouve sur un réseau privé IP: 192.168.1.3
J'ai un compte no-ip, j'ai donc un hostname reconnu sur le Web au niveau de mon ROUTEUR.

PROBLEME: comment établir mes connexions à partir de l'extérieur?

Mes applications clientes n'arrivent pas a trouver mon PC, et je ne peux pas ouvrir de socket au niveau de mon routeur, il y a-t-il un moyen de contourner le problème?

Merci d'avance pour les réponses!

5 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut

En toute logique, si tu as un serveur qui tourne derriere ton routeur, il faut router le port pour que les applis clientes puissent y acceder. Donc il faut specifier a ton routeur que toutes les connexions à tel ou tel port doivent etre redirigées vers 192.168.1.3.

Autre solution, mettre ton serveur en DMZ. Mais là, il va se prendre tous les coups.

Mx
MVP C# 
Messages postés
6
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
8 novembre 2006

Salut,

Je te remercie de ta réponse rapide!

Le routeur est déjà configuré et je suis en Demilitarised Zone sur mon 192.168.1.3... ça voudrait donc dire que j'ai fait des erreurs dans mon code? Faudrait-il que je l'expose pour voir? C'est du multicast... et je n'en ai jamais fait!
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
A priori ca devrait etre bon.
Tu as essayé des trucs de base, comme par exemple te connecter au serveur en local.
Voire meme plutot que d'essayer sur le serveur que tu as deja codé, juste coder un mini serveur qui ecoute la connexion d'un client, simplement pour voir si ca fonctionne et deceler si les erreurs viennent de ton code ou de la config.
Mx
MVP C# 
Messages postés
6
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
8 novembre 2006

Quand j'essaie mon client, il me dit que l'adresse IP est déjà utilisée, cependant de l'extérieur elle n'est pas valide... je ne comprend rien. J'ai du foirer mon code alors... je le poste aussi, au cas ou..
.
<hr size="2" width="100%" />serveur:

class Serveur
    {
        private string HostName = System.Net.Dns.GetHostName();
        private Thread vigile = null;

        private Socket mcastSocket;
        private IPEndPoint localAddress = new IPEndPoint(IPAddress.Any, 5654);
        private MulticastOption mcastOption;

        private bool alive = true;

        public Serveur()
        {
            try
            {
                //code d'adhésion au groupe multicast
                IPAddress ipadresse = System.Net.Dns.GetHostAddresses(HostName)[0];
                mcastOption = new MulticastOption(IPAddress.Parse("234.6.7.8"), ipadresse);
                mcastSocket = new Socket(localAddress.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
                mcastSocket.Bind(localAddress);
                byte[] bIP = System.Net.Dns.GetHostAddresses(HostName)[0].GetAddressBytes();
                // Add membership to the group.
                mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption);
                mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, 1);
                mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, bIP);

                //démarrage de l'attente des clients
                vigile = new Thread(new ThreadStart(recevoir));
                vigile.Start();
            }
            catch (SocketException err)
            {
                System.Windows.Forms.MessageBox.Show("Erreur : "+err.Message.ToString(), "[ERREUR]");
            }
        }
}

<hr size="2" width="100%" />
client:

class Client
    {
        private string HostName = "mon host no-ip";
        private Thread vigile = null;

        private Socket mcastSocket;
        private IPEndPoint localAddress = new IPEndPoint(IPAddress.Any, 5654);
        private MulticastOption mcastOption;

        private bool alive = true;

        public Client()
        {
            try
            {
                //code d'adhésion au groupe multicast
                mcastOption = new MulticastOption(IPAddress.Parse("234.6.7.8"), System.Net.Dns.GetHostAddresses(HostName)[0]);
                mcastSocket = new Socket(localAddress.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
                mcastSocket.Bind(localAddress);
                mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, 1);
                mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption); //erreur ici

                //démarrage de l'attente des clients
                vigile = new Thread(new ThreadStart(recevoir));
                vigile.Start();
            }
            catch (SocketException err)
            {
                System.Windows.Forms.MessageBox.Show("Erreur : "+err.SocketErrorCode.ToString(), "[ERREUR INITIALISATION]");
            }
        }
}
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Oké,
 
je vais regarder ca dès que j'ai le temps, sans rien te promettre, jamais fais de Multicast non plus

Mx
MVP C#