Forum: Netzwerke
by mjustin,
12. Mär 2014
Das ist nicht korrekt. Die OnExecute Methode des TIdTCPServers wird in einer Schleife aufgerufen, unabhängig davon ob Daten angekommen sind oder nicht. Ob Daten angekommen sind, muss man selber ermitteln.
Am Anfang der OnExecute kann man dazu die Funktionen InputBufferIsEmpty und CheckForDataOnSource aufrufen.
Im Beispiel wird, wenn CheckForDataOnSource innerhalb der angegebenen Zeit keine...
Forum: Netzwerke
by mjustin,
11. Mär 2014
Da das Lesen schon in einem eigenen Thread läuft, wird der Hauptthread (sofern keine "Synchronize"-Fehler gemacht werden) nicht blockiert.
procedure TClientReadThread.Execute;
var
Test: AnsiString;
begin
while not terminated do begin
try
DebugOut('Blockierendes Read ab jetzt...');
Forum: Netzwerke
by mjustin,
11. Mär 2014
Ok. Aber die TIdTCPClient Komponente sollte möglichst nur in ihrem eigenen Thread verwendet werden. Ein Zugriff aus mehreren Threads ist möglich, aber nur "nacheinander", unter Einsatz von z.B. TCriticalSection.
Forum: Netzwerke
by mjustin,
11. Mär 2014
Sehe ich es richtig, dass der Client und der Server im gleichen Programm (Prozess) ausgeführt werden?