PDA

Voir la version complète : Programmation réseau


Dragnalith
04/08/2005, 22h58
Bonjour,
J'apprend depuis quelque jour à utilisé SDL_net pour programmer en réseau.
J'arrive à envoyé et recevoir des chaines de caractère gràce à :
int SDLNet_TCP_Send(TCPsocket sock, void *data, int len)
int SDLNet_TCP_Recv(TCPsocket sock, void *data, int maxlen)

Mainteant j'aimerai envoyé des donné un peu plus compliqué comme la position d'une entitée spécifique. Ou une action efféctué.
On m'a déconseillé d'envoyé un structure contenant mes informations car elle ne risquerai pas d'être interprété pareil des deux cotés.
Alors je ne sais comment faire. Dois-je envoyé une chaine de caractère et la parser ? ou existe-t-il un moyen plus simple ?

Loulou
05/08/2005, 09h05
Dois-je envoyé une chaine de caractère et la parser ?
Oui, le passage par un tableau de caractères est la seule solution garantissant la portabilité de l'échange (-> pas de problème de taille de type ou d'endianness). Utiliser une bibliothèque de sérialisation peut être une bonne idée dans ce cas.

De mémoire il existe même des flux style C++ qui dialoguent par socket, mais bon si tu utilises SDL_net inutile de s'éparpiller :)

Dragnalith
09/08/2005, 13h27
Merci beaucoup.

Mais j'ai pas bien compris ce qu'était une bibliothèque de sérialisation ?

Loulou
09/08/2005, 14h42
Je pense que pour ça, Google te donnera des infos plus précises que moi :)

En gros, la sérialisation permet de stocker des données sous forme de texte (pour des sauvegardes, de l'échange réseau, etc...) et de les récupérer telles quelles.

Les bibliothèques de sérialisation modernes (boost::serialization par exemple) epargnent bien du boulot : elles permettent de gérer les cas non-triviaux (classes abstraites, instances polymorphiques, pointeurs, conteneurs, ...) automatiquement.