Obsługa połączeń sieciowych w Lazarus/Free Pascal

0

Od jakiegoś czasu rozważam escape'ować się z języka python do Lazarus / Free Pascal.
Moja znajomość programowania w języku Free Pascal i środowiska Lazarus jest ograniczona, dopiero go poznaję i nie posiadam zaawansowanej wiedzy. Obecnie udało mi się portować proste aplikacje.
W trakcie nauki napotkałem na trudności podczas implementacji "client-server".
Dwie formatki na każdej z nich umieściłem po jednym komponencie typu: TButton, TEdit i TMemo.
Pomimo korzystania z pomocy chatGPT napotykam na jakieś error'y związane z TSocket czy TStreamSocket;
W związku z tym, czy osoby z doświadczeniem na poziomie eksperta mogłyby mi pomóc.

Czy środowisko Lazarus / Free Pascal zawiera jakieś domyślne komponenty / biblioteki gniazd aby obsługiwać połączenia sieciowe?.
Czy może używacie bibliotek zewnętrznych, aby korzystać z gniazd w Lazarus Free Pascal?
Jeżeli tak to jak je dodać do środowiska Lazarus?
Może na .net są jakieś tutoriale typu "step-by-step" dotyczące środowiska Lazarus nie Delphi ogarniające ten temat ?

W swoich odpowiedziach proszę uwzględnić, że Jestem totalnie zielony w tych sprawach,
bardziej niż GPS bez sygnału.

3

Z tego co pamiętam, to lazarus ma tcpserver tcpclient, ale jeżeli to nie wystarcza to są jeszcze bardziej zaawansowane biblioteki
https://wiki.lazarus.freepascal.org/Synapse
https://wiki.freepascal.org/Indy_with_Lazarus

3

Tutaj wątek zawierający dość rozbudowany przykład oparty na synapse: https://forum.lazarus.freepascal.org/index.php/topic,48677.0.html

3

Przejrzyj sobie tutaj: https://wiki.lazarus.freepascal.org/Networking
Generalnie masz do wyboru kilka technik, min.

  • dostarczaną z FreePascal fcl-net, fcl-web
  • synapse
  • Indy
0

Dobrze. Zrobiłem pierwszy krok przy pomocy komponentu "Indy"
Pierwszy klient i server łączą się ze sobą , komunikaty są przesyłane,
jedynie mam lagi pomiędzy serwerem a klientem, pomiędzy klientem a serwerem jest wszystko w porządku.
Jeżeli sobie z tym nie poradzę założę następny post i podeśle pliki do diagnozy.

do brzegu, bo zrobiłem off-topic.

"Indy" zainstalowałem przez Pakier->Online Package Manager... i pojawiły się komponenty na "Palecie komponentów."
Mam takie pytanie, czy jest możliwe instalowanie / dodawanie paczek offline ?
Pakiet "Synapse" pobrałem sobie z GitHub, skompilowałem i pojawił mi się folder / katalog "synapse-master\lib\x86_64-win64"
ale nie wiem jak prawidłowo dodać do projektu, wiem tylko, że nic się nie pojawi na "Palecie komponentów."

ogólnie tych pakietów "fcl-net" o "fcl-web" nie ma w repozytoriach, używam Lazarus Version 3.6 for Windows 64 bit
i dodatkowa uwaga:

FCL-Net ze względu na zależność od biblioteki fp_async, jest ona dostępna tylko w systemie Unix

3
R7YM napisał(a):

Mam takie pytanie, czy jest możliwe instalowanie / dodawanie paczek offline ?

Tak

Pakiet "Synapse" pobrałem sobie z GitHub, skompilowałem i pojawił mi się folder / katalog "synapse-master\lib\x86_64-win64"
ale nie wiem jak prawidłowo dodać do projektu, wiem tylko, że nic się nie pojawi na "Palecie komponentów."

Synapse nie posiada kompoenntów wizualnych, więc nic nie pojawi się na palecie komponentów. Jak już zainstalujesz pakiet w Lazarus (Pakiet > Otwórz plik pakietu) to później możesz dodać do projektu za pomocą Projekt > Inspektor projektu > Dodaj > Nowy wymóg, a następnie w sekcji uses dodajesz jednostki, które są potrzebne.

ogólnie tych pakietów "fcl-net" o "fcl-web" nie ma w repozytoriach, używam Lazarus Version 3.6 for Windows 64 bit

pakiety fcl* znajdują się w każdej instalacji FPC, więc nie trzeba ich instalować, są dostępne od razu.

Osobiście pozostałbym przy Indy - ma wbudowaną wielowątkowość serwera, dodatkowo jest aktywnie używany również w Delphi więc możesz znaleźć dużo więcej pomocy w sieci. Na drugim miejscu poszedłbym w synapse - ale tutaj już sam musisz obsłużyć wielowątkowość serwera. Jest jeszcze lnet: https://github.com/almindor/lnet
Problem z pakietami fcl* jest taki, że są dostarczane wraz z FPC, co przy bardzo rzadkich wydaniach stabilnych wersji powoduje, że nie zawsze masz nowości czy nawet poprawki błędów od razu.

1

Synapse jest szybkie ale dużo rzeczy musisz samodzielnie oprogramować. Za to nie wymaga żadnej instalacji. Wystarczy do katalogu projektu skopiować odpowiedni plik .pas i dodajesz go sekcji uses.
Nie potrzeba bibliotek , chyba że chcesz łączyć się z ssl itp działa na każdej platformie bez problemu tzn programuję na mac os i windows.

Nie wiem do jak dużego projektu to używasz.
Bez problemu napisałem program serwerowy do zarządzania bazą sqlite3. Programy klienckie łączą się z serwerem a ten pośredniczy z sqlitem wielowątkowo. Działa bardzo wydajnie dla kilkuset klientów jednoczesnych. Zapewne działałoby i dla znacznie większej ilości ale test na kilkuset robiłem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.