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