Bonjour,
J'ai commencé un simple programme d'échange de données en réseau local (avec SFML 2.2), et ce programme marchait très bien, seulement, sans vraiment de raisons apparentes, en le lançant le client avait l'air de bien fonctionner mais le serveur s’arrêtait des le "IP du serveur : ..."
Voici mon code :
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
using namespace std;
void serveurConnect( sf::UdpSocket &socket, sf::IpAddress &adresseIPserveur, sf::IpAddress &adresseIPclient, unsigned short &portServeur, unsigned short &portClient ){
if( socket.bind( portServeur ) != sf::Socket::Done ) return;
adresseIPserveur = sf::IpAddress::getLocalAddress();
cout << "IP du serveur : " << adresseIPserveur << endl << endl;
/// le serveur s’arrête ici...
char donnees[64];
size_t recu;
if( socket.receive( donnees, sizeof(donnees), recu, adresseIPclient, portClient ) != sf::Socket::Done ) return;
cout << " Message recu : " << donnees << endl;
char out[] = "Je suis le serveur";
if( socket.send( out, sizeof(out), adresseIPclient, portClient ) != sf::Socket::Done ) return;
cout << "Message envoye : " << out << endl;
}
void clientConnect( sf::UdpSocket &socket, sf::IpAddress &adresseIPserveur, sf::IpAddress &adresseIPclient, unsigned short &portServeur, unsigned short &portClient ){
cout << "IP du serveur : ";
cin >> adresseIPserveur;
adresseIPclient = sf::IpAddress::getLocalAddress();
char donnees[] = "Je suis connecte";
if( socket.send( donnees, sizeof(donnees), adresseIPserveur, portServeur ) != sf::Socket::Done ) return;
cout << "Message envoye : " << donnees << endl;
portClient = socket.getLocalPort();
char in[64];
size_t recu;
if( socket.receive( in, sizeof(in), recu, adresseIPserveur, portServeur ) != sf::Socket::Done ) return;
cout << " Message recu : " << in << endl;
}
int main(){
string choix;
cout << "Serveur (s) ou client (c)? ";
cin >> choix;
cout << endl;
sf::UdpSocket socket;
sf::IpAddress adresseIPserveur;
sf::IpAddress adresseIPclient;
unsigned short portClient;
unsigned short portServeur;
if( choix == "s" ){
cout << "Vous etes un serveur" << endl << endl;
serveurConnect( socket, adresseIPserveur, adresseIPclient, portServeur, portClient );
} else {
cout << "Vous etes un client" << endl << endl;
clientConnect( socket, adresseIPserveur, adresseIPclient, portServeur, portClient );
}
cout << endl;
cout << " IP du serveur : " << adresseIPserveur << endl;
cout << "Port du serveur : " << portServeur << endl;
cout << " IP du client : " << adresseIPclient << endl;
cout << " Port du client : " << portClient << endl;
Vous avez compris, j'aimerais que quelqu'un me dise ou est mon erreur afin de faire refonctionner mon programme.
Merci d'avance