Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Millsialix le Septembre 17, 2016, 04:00:39 pm

Titre: Serveur UDP ne reçoit rien
Posté par: Millsialix le Septembre 17, 2016, 04:00:39 pm
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
Titre: Re : Serveur UDP ne reçoit rien
Posté par: Lolilolight le Octobre 03, 2016, 10:56:15 am
J'ai aussi ce problème depuis que j'ai installé SFML-2.4.

Mon serveur ne reçoit plus aucun message.  :(