Forum de la communauté SFML
Aide => Réseau => Discussion démarrée par: Zylann le Mai 13, 2013, 07:42:35 pm
-
Bonjour,
J'ai commencé à coder une architecture client-serveur, et ai été tenté d'utiliser une méthode "paquet = structure" pour mes paquets réseau :
plutôt que d'utiliser sf::Packet, envoyer directement un tableau d'octets représentant des struct. Ainsi, le receveur n'aurait qu'à reconstruire la structure par l'opération inverse. Je trouve ça pratique car ça évite de se payer des lignes en plus pour << et >> les variables une par une dans un sf::Packet etc.
Cependant, est-ce que ça peut justement poser problème au niveau de l'endianess? Si oui, y-a-til un moyen de s'en débarasser sans avoir à repartir sur du variable-par-variable avec sf::Packet?
-
Problème : oui, théoriquement. En pratique, tous les processeurs de bureau actuels sont little endian. Ce que tu peux trouver en big endian encore aujourd'hui ce sont de vieux macs (PPC) et certains processeurs ARM (téléphones, tablettes).
Personnellement je ne partirais pas sur cette hypothèse, mais si tu cibles sur un public vraiment restreint, pourquoi pas.
Sinon, non, pas moyen d'éviter de retourner les variables une à une lorsque l'endianness est différent. Si dans ce genre de situation on fait de la sérialisation plutôt qu'une bête copie d'octets bruts, c'est pas pour rien ;) Mais ce ne sont que deux opérateurs à écrire pour chaque structure, c'est pas non plus comme si tu devais écrire une tonne de code en plus pour chaque envoi / réception de paquet.
-
Ok, c'est bien ce que je pensais. Merci :)