Bonjour,
J'utilise le systéme TCP de SFML et quand j'envoie un packet constitué:
/* Serveur: */
stuff stuff_;
packet << stuff_;
// puis un envoie tout ce qu'il a de plus conventionnel
// operateur:
sf::packet& operator<<(stuff& stuff_, sf::Packet& packet) {
packet << stuff.getID() << stuff_.getName() << static_cast<int>(stuff_.getTypeObj())
<< stuff_.getMaxSlot() << static_cast<int>(stuff_.getPiece()) << stuff_.getMinLvl()
<< stuff_.getStat() << stuff_.getNbEnchant();
}
A partir de
"static_cast<int>(stuff_.getPiece())", toute les valeurs sont multipliés par 65536.
Et la valeur de
"stuff_.getNbEnchant()" est illisible.
/* Client: */
packet >> stuff;
// operateur:
sf::packet& operator>>(stuff& stuff_, sf::Packet& packet) {
std::string name;
int ID, typeObj, maxSlot, piece, minLvl, stat, nbEnchant;
packet >> ID >> name >> typeObj >> maxSlot >> piece >> minLvl >> stat;
if (!(packet >> nbEnchant))
std::cout << "Fail: extract nbEnchant" << std::endl;
std:: cout << ID << ":" << name << ":" << typeObj << ":" << maxSlot << ":" << piece << ":"
<< minLvl << ":" << stat << ":" << nbEnchant << std::endl;
}
Ce qui me donne quand j'envoie des valeurs:
ID | Name | TypeObj | maxSlot | piece | minLvl | stat | nbEnchant |
1 | "none" | 1 | 2 | 3 | 7 | 8 | 4 | envoie |
1 | "none" | 1 | 2 | 196608 | 458752 | 524288 | "Fail: extract nbEnchant" | reception |
Merci d'avance.