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

Auteur Sujet: Problème : réception d'un message mais provenant du masque sous réseau  (Lu 2313 fois)

0 Membres et 1 Invité sur ce sujet

Melaneos

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
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



« Modifié: Juillet 20, 2012, 10:02:12 pm par Melaneos »

Melaneos

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : Problème : réception d'un message mais provenant du masque sous réseau
« Réponse #1 le: Juillet 23, 2012, 08:55:55 pm »
Personne ne peut m'aider ? ou au moins me dire que la question est bête...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème : réception d'un message mais provenant du masque sous réseau
« Réponse #2 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.
Laurent Gomila - SFML developer