Hallo,
ich beginne gerade mit der Delphiprogrammierung und habe folgendes Problem:
Ich soll die Kommunikation zwischen Client (Rechner) und einem Kartenterminal herstellen. (Verbindung per LAN)
Der Client soll einen 4Byte Längenangabe (xml-Frame) (Big Endian) an das Terminal. Anschließend soll das xml-frame an das Terminal gesendet werden.
Beispiel (So soll es aussehen)
00 00 01 74 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67......
...<?xml version="1.0" encoding="ISO-8859-1" ?>.<ServiceRequest ApplicationSender......
00 00 01 74 bedeutet also, dass der folgende XML-Frame 372 (174 Hex) Bytes lang ist.
Da der Big Endian im INet verwendet wird, wird es doch eine Funktion geben, die die Größenangabe direkt entsprechend konvertieren kann.
Ich hoffe Ihr könnt mir helfen, da ich jetzt schon eine längere Zeit an diesem Problem herumteste. Hab auch schon etwas ähnliches im Forum gefunden, doch dort scheint Indy 9 verwendet worden zu sein und in Indy 10 hab ich die entsprechenden Funktionen noch nicht gefunden.
Danke im Voraus!!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm2.Button8Click(Sender: TObject); var OutStream : TMemoryStream; iSizeXML : Integer;
begin OutStream:=TMemoryStream.Create;
TCPClient.Port:=StrToInT(Form2.ePort.Text); TCPClient.Host:=Form2.localhost.Text; TCPClient.Connect;
Try OutStream.LoadFromFile('Login.xml'); iSizeXML:=OutStream.Size; OutStream.Position:=0;
TCPClient.IOHandler.SendBufferSize:=iSizeXML;
TCPClient.IOHandler.Write(OutStream); OutStream.Position:=0; Finally TCPClient.Disconnect; End; OutStream.Free; end; |
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt