J'ai des valeurs octales (0xabcd) de type short (si j'étais en C) et je désire les envoyer dans une trame UDP. J'utilise la commande d'envoi :
$sock->send(0xabcd);
Dans WireShark je vois 34 33 39 38 31 (ce qui correspond à la chaîne de caractères 43981 i.e. 0xabcd)
Je peux utiliser $sock->send(chr(0xab).chr(0xcd)) et là cela fonctionne.
Si j'utilise $sock->send(chr(0xabcd)) j'ai l'erreur : "Wide character in send at /usr/lib/perl5/5.10.1/i386-linux-thread-multi/IO/Socket.pm line 270"
Je suis obligé pour l'instant de faire :
my $monHex=0xabcd; # car mes valeurs sont de type short et par char
$sock->send(chr(($monHex&0xff00)>>8).chr($monHex&0x00ff));
Cela fonctionne, mais c'est très lent...
En C, j'aurais fait un tableau de short, et au moment de l'envoyer dans le send, je l'aurais casté en tableau de char.
Merci par avance pour votre aide.
Partager