LNet Datenempfang ohne Ereigniss
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
LNet Datenempfang ohne Ereigniss
Hallo,
ich benutze mit LNet eine TCP Verbindung zum senden von Strings auf einen Port.
Nun muss ich aber die Daten sequentiel bearbeiten - d.h. ich sende einen String und möchte ihn dann selbst die Antwort abholen
und nicht dass OnRecaive Ereigniss nutzen.
Wie kann man den Empfangsbuffer auslesen ?
Gruß Frank
ich benutze mit LNet eine TCP Verbindung zum senden von Strings auf einen Port.
Nun muss ich aber die Daten sequentiel bearbeiten - d.h. ich sende einen String und möchte ihn dann selbst die Antwort abholen
und nicht dass OnRecaive Ereigniss nutzen.
Wie kann man den Empfangsbuffer auslesen ?
Gruß Frank
- corpsman
- Lazarusforum e. V.
- Beiträge: 1617
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: LNet Datenempfang ohne Ereigniss
In dem du eine Klasse um die TCP Lnet klasse drumrum baust.
Diese Klasse muss Lnet das OnReceive zur verfügung stellen und kann dann deine Daten Cachen, so dass du sie über einen anderen Get-er abhohlen kannst.
Diese Klasse muss Lnet das OnReceive zur verfügung stellen und kann dann deine Daten Cachen, so dass du sie über einen anderen Get-er abhohlen kannst.
--
Just try it
Just try it
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: LNet Datenempfang ohne Ereigniss
Hallo corpsman,
Danke für den Hinweis - habe nun statt LNet das Synapse Paket verwendet.
Synapse bietet ja zu meinem Erstaunen
wesentlich mehr Möglichkeiten und ist genauso einfach in der Handhabung.
Ein erster Test sah vielversprechend aus.
Gruß Frank
Danke für den Hinweis - habe nun statt LNet das Synapse Paket verwendet.
Synapse bietet ja zu meinem Erstaunen

Ein erster Test sah vielversprechend aus.
Gruß Frank
-
- Beiträge: 36
- Registriert: Fr 17. Okt 2008, 19:24
- OS, Lazarus, FPC: Debian X64, Lazarus 1.1, FPC 2.7.1
- CPU-Target: x86, ARM
Re: LNet Datenempfang ohne Ereigniss
Hallo Frank!
Synapse ist extrem leistungsfähig - es empfiehlt sich, regelmässig akutelle Versionen zu checken (am besten aus dem SVN) und bei Problemen vor allem die mitgelieferten Beispielcodes anzusehen - damit wird schnell klar, wie das Paket aufgebaut ist.
73
GRL
Synapse ist extrem leistungsfähig - es empfiehlt sich, regelmässig akutelle Versionen zu checken (am besten aus dem SVN) und bei Problemen vor allem die mitgelieferten Beispielcodes anzusehen - damit wird schnell klar, wie das Paket aufgebaut ist.
73
GRL
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: LNet Datenempfang ohne Ereigniss
Hallo grl,
ja, da hast du recht.
Synapse läuft auch sauber mit der 1.20 er Version von Lazarus - mit LNet hatte ich da auch einige Probleme.
Gruß Frank
ja, da hast du recht.
Synapse läuft auch sauber mit der 1.20 er Version von Lazarus - mit LNet hatte ich da auch einige Probleme.
Gruß Frank
- corpsman
- Lazarusforum e. V.
- Beiträge: 1617
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: LNet Datenempfang ohne Ereigniss
Hatte heute erst wieder e-mail kontakt mit dem Lnet Entwickler und nen Patch eingefügt. Geht also auch wunderbar. Bei Synapse nutze ich nur Synaser. 

--
Just try it
Just try it
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: LNet Datenempfang ohne Ereigniss
... was wurde denn gepatcht ?
- corpsman
- Lazarusforum e. V.
- Beiträge: 1617
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: LNet Datenempfang ohne Ereigniss
Noch ists nicht im Trunk, aber wenns drin ist, dann kann man mittels
Nen FTP Client zum Upload aus dem Arbeitsspeicher kriegen 
Code: Alles auswählen
{ TMyLFTPClient }
TMyLFTPClient = Class(TLFTPClient) // Enable File Sending by Stream
private
public
Function Put(Const Stream: Tstream; Filename: String): Boolean;
End;
Function TMyLFTPClient.Put(Const Stream: Tstream; Filename: String): Boolean;
Const
FLE = #13#10;
Function MakeStatusRec(Const aStatus: TLFTPStatus; Const Arg1, Arg2: String): TLFTPStatusRec;
Begin
Result.Status := aStatus;
Result.Args[1] := Arg1;
Result.Args[2] := Arg2;
End;
Begin
Result := Not FPipeLine;
// if FileExists(FileName) and
If CanContinue(fsStor, FileName, '') Then Begin
// FStoreFile := TFileStream.Create(FileName, fmOpenRead);
FStoreFile := TMemoryStream.Create; // If you get here a type error, you have to edit lftp.pas and change to Tstream !!
FStoreFile.CopyFrom(stream, stream.Size);
FStoreFile.Position := 0;
PasvPort;
FStatus.Insert(MakeStatusRec(fsStor, '', ''));
FControl.SendMessage('STOR ' + ExtractFileName(FileName) + FLE);
Result := True;
End;
End;

--
Just try it
Just try it