Bonjour
J'ai un programme simple : le Client demande à l'utilisateur de saisir une chaine de caractère, puis le Client l'envoi au Serveur pour que celui ci l'affiche. Ça donne :
Coté Client :
#include <SFML/Network.hpp>
#include <iostream>
int main()
{
// On ouvre un chemin vers l'adresse 127.0.0.1, port 530000
sf::TcpSocket socket;
socket.connect("127.0.0.1",53000);
while (1)
{
// On crée un message
std::string message;
std::cin>>message;
// On crée un paquet avec le message dedans
sf::Packet packet;
packet << message;
// On envoie le paquet
socket.send(packet);
}
// On ferme le chemin
socket.disconnect();
return 0;
}
Coté Serveur :
int main()
{
// On écoute le port 53000
sf::TcpListener listener;
listener.listen(53000);
// Si on trouve le client, on l'accepte
sf::TcpSocket client;
listener.accept(client);
while (1)
{
sf::Packet packet;
// On attend un packet (bloque)
client.receive(packet);
std::string data;
packet >> data;
// On l'affiche
std::cout << "Nouveau paquet : " << data << std::endl;
}
// On arrête d'écouter le port 53000
listener.close();
return 0;
}
Le problème, c'est que quand je saisis "Hello World", le Serveur reçoit deux paquets : "Hello" et "World". Pas super pratique ! Est-ce un bug ou dois-je m'accommoder de cela ?
En tous cas, la SFML, c'est super cool