Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Melaneos le Juillet 20, 2012, 09:55:59 pm

Titre: Problème : réception d'un message mais provenant du masque sous réseau
Posté par: Melaneos le Juillet 20, 2012, 09:55:59 pm
Bonjour à tous !
Alors je vous met quand même un bout de code, mais le problème est très simple à comprendre (à résoudre je sais pas :p) !

Coté client :
void Game_gui::send_server(std::string type_request, std::string content_request){

    // Création du paquet à envoyer
    Packet ToSend;
    ToSend << type_request << content_request;

    std::cout<<"Envoie de "<<type_request<<"("<<content_request<<")"<<" sur "<<IP<<":"<<PORT<<std::endl;
    // Envoi des données à l'adresse IP et le Port choisis
    if (SocketClientSend.Send(ToSend, IP, PORT) != sf::Socket::Done)
    {
    // Erreur...
    }

}

Coté serveur :
void Server::receive_client(){

    // On lit le socket de reception au port 25565
    if (!SocketServerReceive.Bind(25565))
    {
        // Erreur...
    }


    IPAddress Sender;
    unsigned short Port;


    Packet Received;

    std::string type_request;
    std::string content_request;

    if (SocketServerReceive.Receive(Received, Sender, Port) != Socket::Done)
    {
        // Error...
    }

    // Extraction du paquet
    Received >> type_request >> content_request;

    analyse_request_server(Sender, Port, type_request, content_request);

}

Alors voilà, on va considérer que pour l'instant je travail que en réseau local (ce qui est le cas), j'imagine que sur Internet le problème demeure ou s'empire :

-Mon Client envoie un message réseau au serveur (sur son ip : IP ) grâce à ma fonction send_server.
-Mon Serveur reçoit un message réseau provenant du pc (Client) distant mais sur mon réseau local (le serveur récupère l'ip du client dans la variable Sender) grâce à ma fonction receive_client.

Cela marche très bien de base.
Mais, il arrive parfois (soit lors des premiers envoies de message réseau, ex: établir la connexion, soit après un certain temps d'inactivité du serveur) que :
Le Client envoie un message au serveur.
Le Serveur reçoit bien un message MAIS vide et provenant de l'ip 255.255.255.0 (masque de sous réseau) au lieu de provenir comme généralement d'une ip locale type : 192.168.0.2. (la valeur de l'ip du messager se trouvant dans la variable Sender)

Je répète que mise a part les 2 premiers messages de connexion ou après un certain temps d'inactivité de la part du serveur, cela fonctionne très bien, le serveur reçoit bien un message non vide de la part d'une ip locale.

Dans un premier temps, dois-je considérer cela comme une simple perte de paquet ? Si non, avez-vous une solution ou explication ? :p

Voilà, j’espère mettre fait comprendre. D'avance merci de m'aider ! :D



Titre: Re : Problème : réception d'un message mais provenant du masque sous réseau
Posté par: Melaneos le Juillet 23, 2012, 08:55:55 pm
Personne ne peut m'aider ? ou au moins me dire que la question est bête...
Titre: Re : Problème : réception d'un message mais provenant du masque sous réseau
Posté par: Laurent le Juillet 23, 2012, 10:55:12 pm
Il est toujours difficile de debugger un code dont on ne voit que quelques lignes, qui ne comportent visiblement pas d'erreur flagrante. Il faudrait que tu arrives à reproduire le problème dans un code complet minimal que l'on pourrait tester.