Dans Indy lorsque nous envoyons des chaînes au serveur, elles changent et apparaissent dans un nouveau format. par exemple j'ai essayé d'envoyer un fichier binaire (FILE.EXE) avec commande « WriteLn » dans indy:Envoyer des chaînes spéciales avec "WriteLn" dans "Indy" (Delphi)
Ms.LoadFromFile(FileAddress);
Ms.Read(B, Chunk);
for j := low(B) to high(B) do
begin
Part := Part + chr(B[j]);
end;
et pour les chaînes d'envoi:
FileClient.IOHandler.WriteLn(Part);
lorsque le client envoyait des chaînes sur le serveur, Je surveillais le clinet avec un renifleur. et enfin je suis arrivé ce résultat:
MZ?.........yy..,[email protected],.....o..?.I!,.LI!This program cannot be run in DOS mode....$..
Comme vous le voyez il y a des personnages qui ne sont pas dans leur véritable format plus et ils ont changé de « ? » personnage . mais il convient de noter que le sniffer a automatiquement changé une chaîne à "." , par exemple un de ces points (".") est chr (0) ou chr (5) peut-être !!
mais le renifleur n'a pas pu changer certains caractères en "." et nous les voyons dans "?" format. par exemple ouvrir un fichier binaire avec le bloc-notes et vous pouvez voir le véritable format:
alt text http://up.iranblog.com/Files/9f195012dbc2425b8773.png Quoi qu'il en soit, la question est: comment puis-je envoyer un fichier binaire avec la commande « WriteLn » dans Indy 10?
Quelle version de Delphi? Si D2009 + vous regardez l'interprétation de vos chaînes comme étant Unicode où 1 char ne correspond pas à 1 octet. –