IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème avec socket internet et routeur


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut problème avec socket internet et routeur
    bonjour à tous,
    Je suis en train de faire des essai avec les sockets et donc j'ai fait une petite application chat client/serveur qui marche sans problème sur mon réseau.
    Là où sa foire c'est quand j'essai de la faire marcher par internet et en plus derrière des routeurs. Bon je sais pas si j'ai été très clair mais voici les schémas :

    ça sa marche :

    C'est sa qui foire :


    voici les codes :

    serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #include <stdio.h>
    #include <winsock2.h>
    #include "iostream"
    #include "Sthread.h"
     
    using namespace std;
     
    //structure dans laquelle sera contenu les info, pour le thread de réception
    typedef struct params params;
    struct params
    {
        SOCKET sock;
        char buffer[50];
    };
     
    //thread pour la récup des messages
    void functionthread(void* param) // pas très propre mais c'est juste pour un essai
    {
      params* p=(params*)param;
      char buffer[50];
     
      while(1)
    	{
             memset(buffer,0,sizeof(buffer));
             recv(p->sock,buffer,sizeof(buffer),0);
             cout<<buffer<<endl;
    	}
    }
     
    int main(int argc, char* argv[])
    {
     
            cout << "NETWORK serveur"<<endl;
    	system("TITLE NETWORK serveur");
     
    	WSADATA wsa;
    	WSAStartup(MAKEWORD(2,0),&wsa);
     
    	SOCKET server;//Le socket qui servira à écouter sur un port
    	SOCKET sock;//le socket qui servira à communiquer
     
    	SOCKADDR_IN sinserv;	//parametres pour server
    	SOCKADDR_IN sin;		//parametres pour sock
     
            params p; //structure dans laquel il y aura les paramètres pour le trhead  de récup
     
     
     
    	int port;
     
    	cout << "port :"<< endl;
    	cin >> port;
     
    	sinserv.sin_family=PF_INET;	
    	sinserv.sin_addr.s_addr=INADDR_ANY;//Pas besoin d'ip pour le server
    	sinserv.sin_port=htons(port);
     
    	server=socket(PF_INET,SOCK_STREAM,0);
     
    	//SOCK_STREAM pour le TCP
     
     
     
    	bind(server,(SOCKADDR*)&sinserv,sizeof(sinserv));
     
    	listen(server,0);//On se met à écouter avec server, 0 pour n'accepter qu'une seule connection
     
    	char buffer[50];//Pour stocker les messages
    	string buffer2;
    	int sinsize;
    	int err=0;//pour détecter si la connection est toujours valide
     
     
        //creer le trhead pour la récup des infos du client.
     
        Sthread Sth((void*)functionthread,&p);
     
     
    	while(1)
    	{
    		sinsize=sizeof(sin);
    		if((sock=accept(server,(SOCKADDR*)&sin,&sinsize))!=INVALID_SOCKET)
    		{
     
    		    cout << "connecter à "<< inet_ntoa(sin.sin_addr)  <<endl;
    		    p.sock=sock;
    		    Sth.start();
     
     
    			while(err>-1)
    			{
    			 memset(buffer,0,sizeof(buffer));
    			 getline(cin, buffer2);
    		         sprintf(buffer,"%s",buffer2.c_str());
    			 buffer[strlen(buffer)]='\0';
    			 err=send(sock,buffer,strlen(buffer),0);
     
    			}
                        Sth.stop();
    		}
    	}
     
    }
    et le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    #include <stdlib.h> 
    #include <iostream> 
    #include <winsock2.h> 
    #include "Sthread.h"
     
    using namespace std; 
     
    typedef struct params params;
    struct params
    {
        SOCKET sock;
        char buffer[50];
    };
     
    //thread pour la récup des messages
    void functionthread(void* param) // pas très propre mais c'est juste pour un essai
    {
      params* p=(params*)param;
      char buffer[50];
      int err=0;
     
      while(1)
    	{
             memset(buffer,0,sizeof(buffer));
             recv(p->sock,buffer,sizeof(buffer),0);
             cout<<buffer<<endl;
    	}
    }
     
     
     
    int main(int argc, char* argv[]) 
    {  
     
            cout << "NETWORK client" << endl;
     
            WSADATA wsa; 
    	WSAStartup(MAKEWORD(2,0),&wsa);	
    	SOCKET sock;
    	SOCKADDR_IN sin;
    	char ip[15];
    	int port;
    	printf("Ip : ");
    	cin >> ip;
    	printf("%s","Port : ");
    	cin >> port;
     
            params p; //structure dans laquelle il y aura les paramètres pour le trhead de récup
     
    	sin.sin_family=PF_INET; 
    	sin.sin_addr.s_addr=inet_addr(ip);
    	sin.sin_port=htons(port);
    	sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
     
          if(connect(sock,(SOCKADDR*)&sin,sizeof(sin)))
    	{
     
    		cout << "la connection à echouee" << endl;
    		system("PAUSE");
    		exit(0);
    	}
     
    	char host[50];//pour stocker le nom de l'ordi local
    	gethostname(host, sizeof(host));//obtient le nom de l'ordi local
     
            cout << host << " connecte a " << ip << endl;
     
    	char buffer[50];
    	string buffer2;
    	memset(buffer,0,sizeof(buffer));
     
    	int err=0;
    	Sthread Sth((void*)functionthread,&p);
    	p.sock=sock;
    	Sth.start();
    	while(err>-1)//qn y'a err=-1 c'est que la connection foire
    	{
    	 getline(cin, buffer2);
    	 sprintf(buffer,"%s",buffer2.c_str());
    	 err=send(sock,buffer,strlen(buffer),0);//on envoie 
    	 memset(buffer,0,sizeof(buffer));)
    	}
     
    	cout << "connection terminee" << endl;
            Sth.stop(); 
    	WSACleanup();
     
     
     system("pause"); 
     return 0; 
    }
    comment faire pour que sa marche ? j'ai chercher sur google mais j'ai rien trouvé. Y doit bien y avoir une solution puis que des logs comme logmein le font
    merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut questions!
    Pour l'instant le code 'fonctionne', tu as plutôt un problème d'adressage.

    Dans le deuxième shéma qui sont serveur et client?
    est ce que ping, telnet fonctionnent?

    Dans ton premier schéma, serveur et client sont dans le sous réseau 192.168.1.
    Dans le deuxième shéma tu as deux sous réseaux "192.168.1." et un truc magique qui s'appelle en général NAT qui permet à des systèmes appartenant à ces deux sous réseaux de se 'parler'.
    => Pour les systèmes du réseau 192.168.1 de gauche, les adresses des systèmes du sous réseau "192.168.1." de droite ne peuvent être "192.168.1" mais nécessairement autre chose...

    Si les serveurs de droite et de gauche ont des noms différents, peut être que nslookup du noms (ou ping du nom) te sortira l'adresse IP a entrer dans le client.
    => Modifier le client pour qu'il accepte des noms plutôt que des adresses? Ca éviterait de se planter entre les addresses 'locales" et distantes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    merci pour ta réponse
    on va dire que l'addresse 192.168.1.3 de gauche fait serveur et que l'addresse 192.168.1.2 de droite fait le client
    on suppose que le client connait l'adresse publique du serveur (celle du routeur) mais ne sait pas quel ordi des 3 fait serveur. Comment trouver cette ordi (en supposant qu'il y en ai qu'un seul qui fasse serveur pour pas compliquer les choses ). Et même une fois qu'on l'as trouvé (le nom ou l'ip locale) comment on fait pour qu'ils communiquent ?
    Et je n'ai pas très bien compris comment fonctionne nslookup

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Il faut configurer ton routeur coté serveur pour diriger les requetes client vers le serveur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Il faut configurer ton routeur coté serveur pour diriger les requetes client vers le serveur.
    Oui j'avais deja vu sa en recherchant sur internet, mais j'aimerai trouvé un moyen pour que l'utilisateur n'ai pas à faire ça, comment font les logiciels comme logmein pour que sa marche sans avoir à configurer son routeur ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    C'est pas magique!
    Si tu expédies la demande de connexion au routeur à l'adresse 72.245.x.y comment sait-il qu'il faut le transmettre à 192.168.1.x?

    Le NATing offre une solution en permettant la définition d'adresses dans le sous réseau 72.245.x.y qui vont être associées à 192.168.1.x de façon temporaire ou permanente.

    Tu peux aussi modifier le boîtier 'routeur' pour qu'il expédie les requêtes à la bonne machine interne en fonction du numéro de 'port'.

    Les solutions dépendent en fait des possibilités des routeurs à faire autre chose que du routage classique...
    En tout cas, ce n'est pas en regardant ton code que tu trouveras une solution.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Supposons que le client connaisse l'adresse ip publique du serveur (dans l'ex : 88.221.36.121),son adresse locale (dans l'ex :192.168.1.3) ,son nom (par ex ordi-15asd4) et le port. Est-ce qu'à partir de là le client peut "demander" une connexion avec le serveur ? si possible sans avoir à ouvrir la page de configuration du routeur

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Citation Envoyé par tir0nik Voir le message

    Supposons que le client connaisse l'adresse ip publique du serveur (dans l'ex : 88.221.36.121),son adresse locale (dans l'ex :192.168.1.3) ,son nom (par ex ordi-15asd4) et le port.

    Est-ce qu'à partir de là le client peut "demander" une connexion avec le serveur ? si possible sans avoir à ouvrir la page de configuration du routeur
    A priori, seule l'adresse IP publique et le numéro de port sont nécessaires.
    Mais je suppose que tu as déjà fait l'essai? Donc çà ne suffit pas... et comme çà marche en local, il va peut être ouvrir la page de configuration du routeur ;-(

    Est-ce que d'autres protocoles 'fonctionnent' style: PING, TELNET, FTP,...?
    Si oui, est ce qu'on tape sur le 'bon serveur'?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Oui les protocoles PING et FTP fonctionnent (aucune idées pour TELNET).
    Sa veut dire quoi "on tape sur le 'bon serveur'" ?
    Mais alors comment fonctionnent WLM, logmein, pc anywhere,...?

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Citation Envoyé par tir0nik Voir le message
    Oui les protocoles PING et FTP fonctionnent (aucune idées pour TELNET).
    Sa veut dire quoi "on tape sur le 'bon serveur'" ?
    Mais alors comment fonctionnent WLM, logmein, pc anywhere,...?
    Depuis le système client essaie de te connecter au serveur via telnet adresse-ip port (vérifie la syntaxe 'locale' pour faire çà).

    Note: si tu es sûr que FTP et PING fonctionnent dans ces conditions, on va supposer que le réseau a été correctement construit pour que les systèmes se parlent. Il peut y avoir une une fonction de pare-feu qui t'empêche de passer (en fonction du numéro du port).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    telnet marche en local, j'ai pas encore pu essayer depuis l'exterieur. En fait est-ce que c'est possible que mon programme serveur puisse "regarder" tout ce qui passe par le port spécifié sur le routeur ?
    et oui il y à un pare-feu dans mon routeur mais les échanges ne marchent quand meme pas sur les ports "autorisés" (80 par ex).

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut hmmm
    Le piège avec les problèmes réseau est que le nombre d'objets devient rapidement source de confusion.

    Reprend le 2ème shéma de ton 1er post, fait apparaitre.
    1 - le client, le serveur?
    2 - les flux TCP/IP (ping, ftp, telnet) qui fonctionnent (ou pas)

    Je vais aller bosser.
    Bon courage.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    voila comment sa marche :

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut croix rouges
    Elles veulent dire quoi?
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    les croix rouges (ok je suis pas graphiste ) montre ce qui ne marchent pas.
    Je peux faire un ping sur la machine distante mais que sur l'ip publique et le telnet ne marche pas non plus (en plus je sais pas trop comment sa marche ce truc).
    Pour le ftp j'ai pas essayé d'en créer un sur la machine serveur et de me connecter avec le client (possible ?).

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 699
    Par défaut
    Comment 'passer à travers' le routeur pour accéder aux systèmes du sous réseau "192.168.1" ?

    C'est une question relative aux fonctions de 'pare-feu' du routeur qui peuvent être résolues de différentes façons en fonction de l'équipement.

    Tant que tu n'as pas résolu cette question, pas la peine d'aller plus loin.

    Essaie de formuler la question dans le forum 'réseau' en précisant le modèle de boîtier que tu utilises comme routeur.
    Bon courage,
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Je vais pas faire un cours de réseaux, mais bon... voici ce qu'il se passe:

    Cas 1: Le client demande à se connecter au serveur en utilisant l'addresse privée 192.168.1.3 de gauche. Disons que le port du serveur soit 80.
    - Demande de l'application client (192.168.1.2:30357 à droite) vers 192.168.1.3:80
    - La pile TCP/IP du client va chercher à qui transmettre cette demande par la table de routage: 192.168.1.0 c'est le réseau local => on va donc envoyer la requete à 192.168.1.3 lui même
    - La pile TCP/IP va chercher l'addresse (MAC) de la carte réseau qui correspond à 192.168.1.3 (protocole ARP) => @ du 192.168.1.3 de droite
    - La demande va etre envoyée à 192.168.1.3 de droite, qui sera incapable de répondre.

    Cas 2: Le client demande à se connecter au serveur en utilisant l'addresse publique 88.221.36.121 de gauche. Disons que le port du serveur soit 80.
    - Demande de l'application client (192.168.1.2:30357 à droite) vers 88.221.36.121:80
    - La pile TCP/IP du client va chercher à qui transmettre cette demande par la table de routage:88.221.36.121 c'est hors du réseau local => on va donc envoyer la requête au "gateway" par défaut (192.168.1.1 probablement).
    - La pile TCP/IP va chercher l'addresse (MAC) de la carte réseau qui correspond à 192.168.1.1 (protocole ARP) => @ du routeur de droite
    - La demande va etre envoyée au routeur de droite
    - Le routeur récupère le paquet (de 192.168.1.2:30357 vers 88.221.36.121:80). S'apercoit que c'est un paquet "internet"/NAT. Il commence donc par allouer un port chez lui (20789 par exemple) et le fait correspondre à 192.168.1.2:30357... Puis il bidouille le paquet (IP masquerading), et balance sur Internet un paquet de 72.245.231.1:20789 vers 88.221.36.121:80
    - Le route de gauche récupère le paquet en question....

    Cas 2.a. On n'a rien spécifié sur le routeur de gauche:
    - Le routeur ne sait pas quoi faire du paquet... et renvoyer un "connection failure"

    Cas 2.b. On a dit au routeur que tout ce qu'il recoit sur le port 80 doit être envoyé à 192.168.1.3:80
    - Le routeur va bidouiller le paquet (IP masquerading), et essaye de forwarder un paque de 72.245.231.1:20789 vers 192.168.1.3:80
    - La pile TCP/IP du routeur "vois" que 192.168.1.3 est sur le brin 'local' et donc transmet le paquet à 192.168.1.3 himself
    - Recherche de l'addresse MAC de 192.168.1.3 => @ du serveur
    - Envoi du paquet à l'addresse MAC

    Et voilà... le serveur à reçu un paquet qui ne correspond en rien à l'original (sauf pour les données):
    Paquet emis: de 192.168.1.2:30357 pour 88.221.36.121:80
    Paquet reçu: de 72.245.231.1:20789 pour 192.168.1.3:80


    Bon... alors... comment entrer dans le Cas 2.b. sans configuration du routeur de gauche ?
    - Utilisation de UPnP-IGD (non recommandé en raison des failles de sécurité que cela engendre)
    - Utilisation d'un NAT "conique" du coté gauche... Mais cela demande d'apater le port du serveur de manière dynamique coté client.
    - Modification du routeur de gauche pour qu'il effectue le "forward" automatiquement.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    merci pour vos réponses et pour ton explication nicroman,
    Citation Envoyé par nicroman Voir le message
    - Utilisation de UPnP-IGD (non recommandé en raison des failles de sécurité que cela engendre)
    je suis allé voir ce que c'était sur wikipedia mais j'ai pas compris grand chose, comment on l'utilise ?
    Citation Envoyé par nicroman Voir le message
    - Utilisation d'un NAT "conique" du coté gauche... Mais cela demande d'apater le port du serveur de manière dynamique coté client.
    Modification du routeur de gauche pour qu'il effectue le "forward" automatiquement.
    c'est possible sans que l'utilisateur n'ai à configurer le routeur lui-meme sa ?

    Citation Envoyé par wiztricks Voir le message
    C'est une question relative aux fonctions de 'pare-feu' du routeur qui peuvent être résolues de différentes façons en fonction de l'équipement.

    Tant que tu n'as pas résolu cette question, pas la peine d'aller plus loin.
    En fait j'aimerai que sa marche sur tout les routeurs, pas que le programme ne marche qu'avec mon routeur, donc je ne pense pas que se soit spécifique à l'équipement.

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Ecoute, ça n'a absolument rien à voir avec ton application. Le NAT est fait comme ça point barre, si tu veux pouvoir joindre un ordinateur dans un réseau privé il faut configurer une redirection de port sur le routeur (ou une DMZ, ce qui revient grosso-modo au même).

    TOUTES les applications sont concernées par ce problème, il ne faut pas chercher longtemps sur Google pour trouver des millions de messages d'utilisateurs qui ne comprennent pas cette dure réalité. Il existe bien deux trois astuces techniques (je me souviens vaguement d'une techno permettant d'ouvrir un port serveur sur un routeur par simulation de demande client et qui, je crois, est utilisé par bitorrent, si quelqu'un s'en souvient...) mais elles sont limite encore plus complexes et restrictives qu'une bonne config de routeur.

    Conclusion: si tu veux faire tourner un serveur sur un ordi (et qu'importe que tu l'aies codé toi même) apprends à configurer ton routeur ou attends l'IPv6.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    (je me souviens vaguement d'une techno permettant d'ouvrir un port serveur sur un routeur par simulation de demande client et qui, je crois, est utilisé par bitorrent, si quelqu'un s'en souvient...)
    C'est possible ça ? comment ? il faudrait déjà trouver comment on peut ouvrir un port sur son routeur sans avoir à le configurer manuellement...

Discussions similaires

  1. Problème avec Socket et GZIPInputStream
    Par flake90 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 17/03/2010, 05h22
  2. probléme avec conenxion internet sous Mobile dotnet
    Par aitbouhou dans le forum Windows Forms
    Réponses: 0
    Dernier message: 11/06/2009, 11h08
  3. Problèmes avec SMTP_Auth (internet command)
    Par Castafiore dans le forum 4D
    Réponses: 3
    Dernier message: 27/04/2009, 18h45
  4. Problème avec socket UDP
    Par Prayeriz dans le forum Développement
    Réponses: 4
    Dernier message: 12/01/2009, 08h18
  5. Problème avec Socket et/ou Telnet sur le manager d'Asterisk
    Par gorby69 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 21/07/2006, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo