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 !