Indy TCPClient

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
atroesch
Beiträge: 2
Registriert: Mo 7. Jul 2025, 10:05

Indy TCPClient

Beitrag von atroesch »

Ich will ein einfaches kleines Consolen-Progamm mit der Indy-Bibliothek erstellen.
Ich wähle neues Projekt-> Einfaches Programm (Konsole).

uses idtcpclient;

unit nicht gefunden...?

Indy 10 ist über den Online Packetmanager installiert und Lazarus neu kompiliert...

Benutzeravatar
Zvoni
Beiträge: 412
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Indy TCPClient

Beitrag von Zvoni »

... und auch bei benötigte Packages hinzugefügt (Projekt-Inspektor)?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
theo
Beiträge: 10931
Registriert: Mo 11. Sep 2006, 19:01

Re: Indy TCPClient

Beitrag von theo »

Soweit mir bekannt ist, ist Indy nicht besonders geeignet für Konsolenanwendungen.
Ich würde eher Synapse empfehlen oder fcl-web. Ich weiss ja nicht, was du vorhast.
https://wiki.freepascal.org/Networking_libraries
http://synapse.ararat.cz/doc/help/

Bei deinem Indy fehlt wahrscheinlich die Package-Abhängigkeit in deinem Projekt.
Projekt -> Projektinspektor -> Hinzufügen -> Neue Anforderung.
Anm: Das geht bei einer GUI Anwendung automatisch, indem man die Komponente auf das Formular legt.
https://wiki.freepascal.org/Lazarus_Packages/de#FAQ

Warf
Beiträge: 2151
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Indy TCPClient

Beitrag von Warf »

Für Raw TCP brauchst du weder Indy noch sonst irgendeine Third-Party Bibliothek, einfach die FCL-Net Klassen verwenden die mitgeliefert werden:

Code: Alles auswählen

uses ssockets;

...
var
  sock: TInetSocket;
begin
  sock := TInetSocket.Create('IP', Port);
  try
    // Use Sock as TStream to read and write
  finally
    sock.free;
  end;
end;
Alternativ kannst du dir auch die fpsockets unit anschauen auch wenn sie aktuell noch nicht im Mainline FPC drin ist: https://gitlab.com/freepascal.org/fpc/s ... sockets.pp (bzw eine nicht fcl version findest du hier). Damit wird das ganze noch einfacher:

Code: Alles auswählen

var
  Sock: TFPSocket;
  Msg: String;
begin
  sock := TCPSocket(stIPv4);
  try
    Connect(Sock, '127.0.0.1', 1337);
    SendStr(Sock, 'Hello Server');
    Msg := ReceiveStr(Sock, 32);
    WriteLn('Server answered: ', Msg);
  finally
    CloseSocket(Sock);
  end;
end;

atroesch
Beiträge: 2
Registriert: Mo 7. Jul 2025, 10:05

Re: Indy TCPClient

Beitrag von atroesch »

super, danke...

Benutzeravatar
theo
Beiträge: 10931
Registriert: Mo 11. Sep 2006, 19:01

Re: Indy TCPClient

Beitrag von theo »

Warf hat geschrieben: Mo 7. Jul 2025, 11:33 Für Raw TCP brauchst du weder Indy noch sonst irgendeine Third-Party Bibliothek, einfach die FCL-Net Klassen verwenden die mitgeliefert werden
Richtig. Da ich selber fast immer Synapse verwende, war ich mir plötzlich nicht mehr sicher, FCL-Net zu empfehlen, weil es so stiefmütterlich behandelt wird.
Hier steht kaum etwas Ermutigendes https://wiki.lazarus.freepascal.org/fcl-net , und auf der https://wiki.freepascal.org/Networking_libraries Seite kommt es gar nicht vor.
Warum?

Antworten