Ecrire un double sur une socket
Salut,
j'suis actuellement sur un projet de client/serveur en C/C++ et je dois donc communiquer des informations entre mon serveur et mon client.
Pour se faire je n'ai pas voulu envoyer des commandes textes au serveur car je trouve pas ça très agréable à manipuler. Je préfère directement inscrire les données comme elles sont. Je tiens à préciser que j'écrit ces données en big endian.
Pour faire ça j'ai donc fait deux classe, DataInput et DataOutput. Leur structure est assez simple, j'ai pour chaque type une méthode qui écrit dans un buffer la donnée, et une méthode qui lit cette donnée depuis le buffer.
Par exemple :
pour écrire un int :
Code:
1 2 3 4 5 6 7 8
|
void DataOutput::writeInt(int i)
{
_buf += (i >> 24);
_buf += (i >> 16) & 0xff;
_buf += (i >> 8) & 0xff;
_buf += i & 0xff;
} |
pour lire un int :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
int DataInput::readInt()
{
int ret;
ret = _buf[_pos] << 24;
ret |= ((_buf[_pos + 1] & 0xff) << 16);
ret |= ((_buf[_pos + 2] & 0xff) << 8);
ret |= _buf[_pos + 3] & 0xff;
_pos += 4;
return (ret);
} |
Tout ça fonctionne à merveille et je pense d'ailleurs que c'est un procédé classique.
Mais je me heurte à un problème. Je ne sais pas comment écrire un double ou encore un float. Est ce que vous auriez une idée de comment faire ceci ?
Merci beaucoup !