![]() |
TIdPeerThread in Indy 10
hi
ich versuche gerade das OS Projekt von ![]()
Delphi-Quellcode:
mein Problem ist es, dass es in indy 10 keinen IdPeerthread mehr gibt, sondern idContext.
procedure TfrmMainServer.TcpServerExecute(AThread: TIdPeerThread); //<-- in Indy 10 steht (AContext: TIdContext)
Var sClientMsg : String; FileReceiver : TFileReceiver; //diese Definietion kommt von der Filereceiver Unit begin try // Clientnachricht lesen sClientMsg := AThread.Connection.ReadLn(#$A,5500); FileReceiver := TFileReceiver.Create(AThread,sClientMsg); try // gültige Nachricht vom Client ? if FileReceiver.ServerMsgOK then begin // Datei jetzt empfangen if FileReceiver.Start then // Bestätigung zum Clientschreiben AThread.Connection.WriteLn('FILEOK') else // Error-Nachricht schreiben AThread.Connection.WriteLn('FILEERROR'); end; finally FileReceiver.free; end; except AThread.Connection.Disconnect; end; end; in der Filereceiver unit wird der idPeerthread jedoch benötigt
Delphi-Quellcode:
nur wenn ich statt AThread: TIdPeerThread, AContext: TIdContext hineinschreibe bringt das nicht wirklich zum Erfolg.
type
TFileReceiver = Class private .. fLabRe : TLabel; // Indy-Server-Thread AThread : TIdPeerThread; // <-- hier // wichtige Elemente zum Empfangen der Datei iFileSize : Cardinal; ... protected // public .. end; wie kann ich das Umschreiben oder kennt jemand eine bessere Lösung mit dem selben Ergebnis? Bitte fragen, falls etwas unverständlich ist |
AW: TIdPeerThread in Indy 10
Guten Morgen!
Ich habe das selbe Problem, beide Varianten ausgetestet, undeklarierte Bezeichnungen. Verwende auch Indy 10. Gruß bronxy1337 |
AW: TIdPeerThread in Indy 10
Hallo zusammen,
TIdPeerThread muss durch TIdContext ersetzt werden; uses um IdContext erweitern . Außerdem muss im SourceCode wie folgt vorgegangen werden damit es dann auch wieder unter Indy10 klappt:
Delphi-Quellcode:
Also im Prinzip jede Deklaration von TIdPeerThread durch TIdContext austauschen.
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
Var sClientMsg : String; FileReceiver : TFileReceiver; //diese Definietion kommt von der Filereceiver Unit begin try // Clientnachricht lesen sClientMsg := AContext.Connection.Socket.ReadLn(#$A,5500); FileReceiver := TFileReceiver.Create(AContext,sClientMsg); try // gültige Nachricht vom Client ? if FileReceiver.ServerMsgOK then begin // Datei jetzt empfangen if FileReceiver.Start then // Bestätigung zum Clientschreiben AContext.Connection.Socket.WriteLn('FILEOK') else // Error-Nachricht schreiben AContext.Connection.Socket.WriteLn('FILEERROR'); end; finally FileReceiver.free; end; except AContext.Connection.Disconnect; end; end; Überall wo geschriebe/gelesen wird AThread.Connection mit AContext.Connection.Socket ersetzen und dort wo eine Verbindung geschlossen werden soll AThread.Connection.Disconnect mit AContext.Connection.Disconect ersetzen. Das war jetzt die Variante/Umsetzung für den Indy TCP-Server mit Indy10, Umsetzung/Portierung des Clients sollte sich daraus ableiten lassen. Mfg DataCool |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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