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

Développement Discussion :

[Socket][C++]Utilisation des sockets sur internet


Sujet :

Développement

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut [Socket][C++]Utilisation des sockets sur internet
    Bonjour à tous,

    J'essaie de programmer un petit serveur d'identification (un client se connecte, envoie un identifiant et mot de passe, et le serveur vérifie les infos dans une BDD).

    Mon serveur est en fait un PC sous Linux, connecté à un réseau local comprenant 3 machines + un modem ethernet qui fait aussi routeur.

    Lorsque je demande à mon client (un des PC connectés au réseau) de se connecter à mon serveur en lui donnant son adresse IP local (type 192.168.0.1), il arrive à communiquer. Par contre, si je lui donne l'adresse IP de ma connection internet (pour simuler un client qui essaie de communiquer avec le serveur via internet), il ne trouve pas mon serveur (erreur lorsque j'utilise la fonction connect())

    Quelqu'un pourrait-il m'expliquer pourquoi? Cela est-il du au fait que mon client et mon serveur ont la même IP sur internet (mon routeur partageant une même connection entre mes 3 PC)?

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    Bonjour,

    cela est dù à la configuration de ton routeur, qui n'est pa configuré pour router le type d'information que tu envoies (c'est à dire des infos qui viennent de l'intérieur, qui vont à l'intérieur, mais qui doivent être routées vers l'extérieur entre les deux).

    Je ne sais pas si ton routeur est configurable pour cela (dépend du routeur), et de toute manière, je ne me souviens plus du nom de ce qu'il faut configurer (router des ports ne devant pas être suffisant), mais peut-être que d'autres personnes peuvent t'aider sur le sujet

  3. #3
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Pour le moment, j'ai utilisé les règles NAT pour ouvrir le port pour mon serveur, mais toujours rien : lorsque je lance le client, j'ai l'impression qu'il se pert, il "rame" pendant quelques secondes (une dizaine), puis m'affiche l'erreur, comme si je n'avais pas lancé le serveur...

    Je vais essayer de transmettre le client à un ami, sur internet, voir si lui arrive à contacter le serveur, histoire d'avoir plus d'informations

    Merci pour ton aide gangsoleil, je vous tiens au courant dès que le test est réalisé

  4. #4
    Membre expérimenté
    Avatar de Aramis
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 493
    Points : 1 638
    Points
    1 638
    Par défaut
    Bonjour,

    Citation Envoyé par ChriGoLioNaDor
    Pour le moment, j'ai utilisé les règles NAT pour ouvrir le port pour mon serveur, mais toujours rien
    Pour commencer, le NAT est une fonction du router par consequent dire que le NAT est active ne veut pas dire que le "port" sur le serveur est en mode ecoute car ce sont deux entites separees. A mon avis, dans votre cas le NAT ne sert a rien ou plutot le NAT ne fait pas ce que vous attendez.

    Citation Envoyé par ChriGoLioNaDor
    : lorsque je lance le client, j'ai l'impression qu'il se pert, il "rame" pendant quelques secondes (une dizaine), puis m'affiche l'erreur, comme si je n'avais pas lancé le serveur...
    Classique le client lance un requete et les servers DNS de votre FAI essaye d'y repondre. Si ils trouvent le ou les adresses demandees, votre router peut alors dirige la communication dans la bonne direction. Cependant, le probleme semblerai etre le fait que lorsque le routeur recoit la requet il ne sait pas ou l'envoye. Dans ce cas, vous devez configurer votre router pour qu'il renvoie les requetes sur un port specifique (disons 2048) vers une adresse IP particuliere de votre reseaux local (disons 192.168.1.2). Dans la configuration decrite ici le port qui sera "demande" sur la machine locale sera 2048.

    Citation Envoyé par ChriGoLioNaDor
    Je vais essayer de transmettre le client à un ami, sur internet, voir si lui arrive à contacter le serveur, histoire d'avoir plus d'informations
    Je recommande de lire le fichier d'aide de FTPZilla. Il y a un excellent tutorial sur comment faire en sorte qu'un server FTP local puisse etre accessible depuis l'Internet. Il ne vous reste plus qu'a adapter les informations contenues dans ce tutorial a vos besoin.

    Bonne Continuation,

    Ar@mi$

  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Aramis
    Bonjour,
    Pour commencer, le NAT est une fonction du router par consequent dire que le NAT est active ne veut pas dire que le "port" sur le serveur est en mode ecoute car ce sont deux entites separees. A mon avis, dans votre cas le NAT ne sert a rien ou plutot le NAT ne fait pas ce que vous attendez.
    Lorsque j'entre comme paramètre l'IP locale du serveur, la communication fonctionne correctement. Cela ne veux-il pas dire que les ports mon serveur est bien configuré?


    Citation Envoyé par Aramis
    Classique le client lance un requete et les servers DNS de votre FAI essaye d'y repondre. Si ils trouvent le ou les adresses demandees, votre router peut alors dirige la communication dans la bonne direction. Cependant, le probleme semblerai etre le fait que lorsque le routeur recoit la requet il ne sait pas ou l'envoye. Dans ce cas, vous devez configurer votre router pour qu'il renvoie les requetes sur un port specifique (disons 2048) vers une adresse IP particuliere de votre reseaux local (disons 192.168.1.2). Dans la configuration decrite ici le port qui sera "demande" sur la machine locale sera 2048.
    Je pensais justement que le fait d'avoir configuré les NAT (en disant que toute demande sur le port "4663" seraient transmises à l'IP ..., comme je le fais pour faire tourner emule)

    Citation Envoyé par Aramis
    Je recommande de lire le fichier d'aide de FTPZilla. Il y a un excellent tutorial sur comment faire en sorte qu'un server FTP local puisse etre accessible depuis l'Internet. Il ne vous reste plus qu'a adapter les informations contenues dans ce tutorial a vos besoin.
    Je vais essayer de regarder ca

    En tous cas, merci de ton aide

  6. #6
    Membre expérimenté
    Avatar de Aramis
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 493
    Points : 1 638
    Points
    1 638
    Par défaut
    Re,
    Citation Envoyé par ChriGoLioNaDor
    Lorsque j'entre comme paramètre l'IP locale du serveur, la communication fonctionne correctement. Cela ne veux-il pas dire que les ports mon serveur est bien configuré?
    Cela depend, est ce que vous effectuez votre test depuis une "autre" machine sur le reseaux local. Si oui, on peut dire avec un certain degre de certitude que le server recoit bien les communications.

    Citation Envoyé par ChriGoLioNaDor
    Je pensais justement que le fait d'avoir configuré les NAT (en disant que toute demande sur le port "4663" seraient transmises à l'IP ..., comme je le fais pour faire tourner emule)
    Non, le NAT ne peut pas faire de "port forwarding". Le "port forwarding" est une fonction du par-feu et non pas du traducteur d'adresse (NAT). Ca mise a part, il semblerai que vous ayez effectue les manips necessaires.

    J'espere que le tutorial de FTPZilla vous sera utile.

    Ar@mi$

  7. #7
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Cela depend, est ce que vous effectuez votre test depuis une "autre" machine sur le reseaux local. Si oui, on peut dire avec un certain degre de certitude que le server recoit bien les communications.
    Oui oui, je teste bien mon serveur avec des clients exécutés sur mes autres PCs, pour reproduire au maximum les conditions d'utilisation réelles (hélas, je n'ai pas 2 connections internet :p)

    Non, le NAT ne peut pas faire de "port forwarding". Le "port forwarding" est une fonction du par-feu et non pas du traducteur d'adresse (NAT). Ca mise a part, il semblerai que vous ayez effectue les manips necessaires.
    Pour le "port forwarding", je ne pense pas que mon routeur aie un firewall intégré, et mon serveur ne comporte pas de firewall (pour le moment, j'essaie deja de le faire fonctionner sans )


    Je vais continuer à étudier tout ca :p Merci une fois de plus pour ton aide

  8. #8
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 177
    Points : 73
    Points
    73
    Par défaut
    Bon, j'ai demandé à un ami de tester mon serveur, et lui arrive à communiquer avec :p

    C'est donc bien un problème du au fait que l'émetteur (client) et le récepteur (serveur) ont la même IP, quand ils communiquent via internet

    Par contre, j'ai une autre question: lorsque je lance mon serveur, pour écouter le port 4663 en TCP, je recois les IP de personnes (je ne sais pas qui) qui se connectent à mon serveur, et ce dernier plante dans les secondes qui suivent. Par contre, quand c'est mon ami qui se connecte, là le serveur continue à tourner, et tout fonctionne bien :S

    Quelqu'un aurait une idée?

  9. #9
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 75
    Points : 73
    Points
    73
    Par défaut
    ce port est peut etre utilisé par edonkey
    change le numéro du port tu n'aura peut être plus de problème

Discussions similaires

  1. utilisation des socket
    Par nadh3m dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/04/2007, 13h37
  2. Utilisation des Socket
    Par Bull_ dans le forum C++
    Réponses: 4
    Dernier message: 11/03/2007, 15h48
  3. [c#] Utilisation des sockets
    Par zwoke dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/09/2006, 09h28
  4. [MFC] Faible utilisation des sockets via les MFC ?
    Par Yellowmat dans le forum MFC
    Réponses: 1
    Dernier message: 25/08/2005, 17h15
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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