Bonjour,
J'avais créer ce topic, résolu le problème, mais finalement un nouveau est apparu :
Quand j'envoit des strings en UDP côté client, le serveur les capte mal,
Exemple j'envoit : azerty
Le serveur recoit : azerxu
Il n'affiche que les 4 premières lettres et remplace le reste par xu...
Voici mon code envoit client et reception serveur :
Client :
std::getline(std::cin, msg); //msg est de type std::string
if (socket.send(msg.c_str(), sizeof(msg.c_str()), server, port) != sf::Socket::Done)
return;
std::cout << "Client :" << msg << std::endl;
Serveur :
if (socket.receive(in, sizeof(in), received, sender, senderPort) != sf::Socket::Done) //in est le char in[] de l'exemple
return;
std::cout << "Client :" << in << std::endl;
Je pense que le pb vient du fait du string/char[], mais je suis pas sur....
Aussi, serait-il possible d'avoir une boucle d'exemple d'un jeu en réseau ?
Ce que j'aimerais savoir c'est comment intégrer ça dans un "jeu" ?
while(window.isOpen())
{
while(window.pollEvent(event))
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
sprite.move(0, -1);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
sprite.move(1, 0);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
sprite.move(0, 1);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
sprite.move(-1, 0);
}
window.clear();
window.draw(sprite);
window.display();
}
}
En gros ici c'est une boucle "classique" de jeu offline, où je rajoute mes fonctions de réseau ?
Je rajoute une condition if(socket.send(....)) dans ma boucle ou autres ... ?
Et je dois update les autres joueurs donc j'ajoute un if(socket.receive(...)) ?
Merci d'avance pour ces deux petites réponses :)