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 :
Le recepteur fais un truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CAsyncSocket remoteSocket; int nNombre = 4; remoteSocket.SendTo( &nNombre , sizeof(nNombre ), PORTDEST, "127.0.0.1" );
Et ça marche très bien, comme ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int nRead = ReceiveFrom( &cmdBuffer, MAXCMDLENGTH, sIPSource, nPort ); int nCmd = *((int*)cmdBuffer);
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 :
Et là, ca ne marche plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CAsyncSocket remoteSocket; char sCmd[MAX_PATH] = "\0\0\0\4"; remoteSocket.SendTo( &sCmd, sizeof(sCmd), PORTDEST, "127.0.0.1" );
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.
Partager