Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème de connection  (Lu 2998 fois)

0 Membres et 1 Invité sur ce sujet

thomasd94

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
    • E-mail
Problème de connection
« le: Décembre 01, 2013, 01:00:41 am »
Bonjour 

J'ai commencé le réseau sur la SFML il y a 2 jour et j'ai essayé de faire un petit programme de connexion entre 2 personnes par tcp.
L'utilisateur a le choix entre le serveur ou le client. Si c'est le serveur, le programme lui donne les 3 adresses IP ( localhost, adresse local et l'adresse publique) et le numéro de port pour la connexion du client.
Et si c'est le client, on lui demande de rentrer l'ip et le port, et ensuite le programme tente de se connecter.
Quand j'ai fait les tests en local host il y avait pas de soucis, mais sur 2 ordinateurs de reseau different ça ne  marche pas et je n'arrive pas a savoir pourquoi.

Voila mon code : 
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>

using namespace std;

int main()
{
    string mode;
    cout << "Serveur ou Client"<<endl;
    cin >> mode;
    if(mode == "serveur") // mode serveur
    {
        sf::TcpListener listener;
        sf::TcpSocket serveur;
        sf::Packet packet;
        cout << "Vous etes le serveur"<< endl;
        cout << "Ip propre a l'ordinateur: "<< sf::IpAddress::LocalHost << endl;
        cout << "Ip local: "<< sf::IpAddress::getLocalAddress() << endl;
        cout << "Ip public: "<< sf::IpAddress::getPublicAddress() << endl;
        if(listener.listen(sf::Socket::AnyPort) != sf::Socket::Done)
        {
             cout<<"connexion au port impossible"<<endl;
        }
        else
        {
            cout << "Numero du port " << listener.getLocalPort() << endl;
            cout << "Attente de connexion . . . ";
            if (listener.accept(serveur) != sf::Socket::Done)
            {
                cout<<"Connexion échoue"<<endl;
            }
            cout << "\nconnexion etabli" << endl;
        }
    }
    else
    {
        cout << "Vous etes le client"<<endl;
        sf::TcpSocket socket;
        sf::IpAddress adresse;
        sf::Packet packet;
        string ip;
        unsigned short port;
        cout << "Entrez une adresse ip" << endl;
        cin >> ip;
        cout << "Entrez le numero du port" << endl;
        cin >> port;
        adresse = ip;
        sf::Socket::Status status = socket.connect(adresse,port);
        if (status != sf::Socket::Done)
        {
            cout<<"connexion impossible"<<endl;
        }
        else
        {
            cout << "connexion etabli" << endl;
        }
    }
    system("pause");
    return 0;
}
 

Merci d'avance pour votre aide  :D

leoman

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
    • E-mail
Re : Problème de connection
« Réponse #1 le: Janvier 25, 2014, 02:00:09 pm »
j'ai le meme probleme, en local ça fonctionne parfaitement mais, a l'utilisation de l'IP publique rien ne ce passe
sauf dans certain cas ou en utilisant des port specifique mon apllication client parvient a se connecté, mais pas le serveur, donc je pense que c'est au niveau du taf de la box qu'il y a un soucis, elle ne fais pas le lien avec le pc HOST, mais je debute total dans le resau donc merci d'avance a ceux qui aurait la bonté d'aporter de la lumiere sur mon incompréhension.

Arneast

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
    • E-mail
Re : Problème de connection
« Réponse #2 le: Janvier 25, 2014, 03:42:54 pm »
Quand tu utilises une IP publique , il s'agit en réalité de l'adresse du routeur : si le routeur n'a pas été configuré pour transmettre une connexion entrante sur le pc de ton application, il va la bloquée.
La solution est donc d'aller faire une redirection de port sur ton routeur ( généralement une box si tu es chez toi ), cette manipulation dépendra donc de ton fournisseur : à savoir que seul le coté serveur doit faire ça.
Si tu n'y parviens pas, pense à l'utilisation d' Hamachi pour créer un LAN virtuel !

Aussi je ne suis pas expert en réseau, je pourrais me tromper.