Question sur les Hostnames et réseaux privés

aurel16v Messages postés 6 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 8 novembre 2006 - 7 nov. 2006 à 21:53
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 8 nov. 2006 à 20:48
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 nov. 2006 à 09:05
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# 
0
aurel16v Messages postés 6 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 8 novembre 2006
8 nov. 2006 à 10:54
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!
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 nov. 2006 à 11:02
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# 
0
aurel16v Messages postés 6 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 8 novembre 2006
8 nov. 2006 à 18:01
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]");
            }
        }
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
8 nov. 2006 à 20:48
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# 
0
Rejoignez-nous