Codage d'un "int" passé par un socket
Bonjour,
Je dois faire passer un entier d'un programme à un autre.
Pour cela, j'utilise des sockets.
Dans le programme émetteur, je fais un truc comme ça :
Code:
1 2 3
| CAsyncSocket remoteSocket;
int nNombre = 4;
remoteSocket.SendTo( &nNombre , sizeof(nNombre ), PORTDEST, "127.0.0.1" ); |
Le recepteur fais un truc comme ça :
Code:
1 2 3
| int nRead = ReceiveFrom( &cmdBuffer, MAXCMDLENGTH, sIPSource, nPort );
int nCmd = *((int*)cmdBuffer); |
Et ça marche très bien, comme ça.
Sauf que quand je décris dans un doc, je dis que le paramètre est un entier signé de 4 octet. Mon utilisateur lambda peut donc potentiellement envoyer comme ceci :
Code:
1 2 3
| CAsyncSocket remoteSocket;
char sCmd[MAX_PATH] = "\0\0\0\4";
remoteSocket.SendTo( &sCmd, sizeof(sCmd), PORTDEST, "127.0.0.1" ); |
Et là, ca ne marche plus !
En effet, dans mon premier cas, le "4" se trouvera dans le premier octet, alors que dans le second, il sera dans le dernier... pourquoi ?
Pour info, je suis sous XP avec Visual C++.
Merci.