send() selon la MSDN, on lui passe la taille du buffer donc le zéro n'a pas de conséquence à l'envoie
Heureusement, sinon on ne pourrait pas envoyer des record sérialisé si il y avait une gestion par zéro terminal
(justement un bug du TCP\IP à l'époque de Windev 7.0)
Ensuite, pour la réception avec
recv, c'est le même principe, on indique la taille du buffer mais surtout il renvoie le nombre d'octet réellement écrit !
C'est peut-être la ton erreur, tu utilise un StrPas ou un assimilé String\AnsiString implicite alors qu'il faut bien s'arrêter au nombre d'octet lu !
Evite le type string, préfere le type Windows.BYTE ou array of Byte, des buffers sans risque en XE2 !
surtout qu'en Delphi, le paramètre est un buffer non typé donc pas d'histoire de chaine à zéro terminal
1 2
| function send(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
function recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall; |
Partager