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

Auteur Sujet: Serveur UDP ne reçoit rien  (Lu 1441 fois)

0 Membres et 1 Invité sur ce sujet

Millsialix

  • Invité
Serveur UDP ne reçoit rien
« 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

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Serveur UDP ne reçoit rien
« Réponse #1 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.  :(