![]() |
TIdTCPServer und -Client - senden und empfangen
Liebe DP!
Ich stecke momentan an einem etwas, für mich, größerem Problem fest. Ich habe zei Programme, einmal Server einmal Client. Gehen wir davon aus, ich sei schon verbunden. Sehr einfach gestrickt könnte der CLient so senden:
Delphi-Quellcode:
.
IdTCPClient1.Socket.WriteLn('Bernhard');
Und der Server könnte im OnExecute-Event so antworten:
Delphi-Quellcode:
.
AContext.Connection.Socket.WriteLn('Hallo ' + AContext.Connection.Socket.ReadLn); // Hallo Bernhard
Ich habe etwas von WriteBuffer und ReadBuffer gelesen. Das gibt es in Indy 10 abr nicht mehr also musste ich ein wenig umstricken (Google half mir): Ich sende mit dem Client ein paar Bytes:
Delphi-Quellcode:
Und im Server empfange ich diese auch korrekt:
// Client : sendet Byte
procedure WriteByte(Value: Byte); var Buf: TIdBytes; begin Buf := IdGlobal.RawToBytes(Value, SizeOf(Value)); IdTCPClient1.IOHandler.Write(Buf); end;
Delphi-Quellcode:
Aber wie funktioniert das mit Strings? Momentan sende ich folgendermaßen:
// Server : empfaengt Byte
function ReadByte: Byte; var aData: TIdBytes; begin AContext.Connection.IOHandler.ReadBytes(aData, SizeOf(Byte)); Move(aData[0], PByte(@Result)[0], Length(aData)); end;
Delphi-Quellcode:
Aber beim empfangen tut sich nichts und das Execute-Event bleibt hängen:
// Client : sendet String
procedure WriteString(Value: string); // var // Buf: TIdBytes; begin // Buf := IdGlobal.RawToBytes(Value, SizeOf(Value)); IdTCPClient1.IOHandler.Write(Value); end;
Delphi-Quellcode:
// Server : empfaengt String (nicht)
function ReadString: string; begin Result := AContext.Connection.IOHandler.ReadString(ReadByte); // ReadByte = siehe "Server : empfaengt Byte" end; Was mache ich falsch und welches ist die bessere Methode? Mit den Buffern oder einfach Socket.WriteLn, Socket.ReadLn ? |
AW: TIdTCPServer und -Client - senden und empfangen
Was willst Du denn genau machen? Streams senden?
Dann schau mal, ob Du über die zwei Links weiter kommst... Meine aktuelle Lösung ist eine Mischung zwischen beiden, ich habe aber kein komplettes Testprojekt. ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz