Networking/pl
한국어 · Deutsch · English · Español · Français · Polski · Português · Slovenčina · Русский · 中文(中国) · 日本語
Sieć
Ta strona zawiera zarówno poradniki/kod, jak i informacje dotyczące programowania sieciowego za pomocą Lazarusa oraz zwykłego FPC.
Protokół TCP/IP
Note: Ponieważ istnieje wiele bibliotek (Synapse, lnet, fphttpclient, Indy,...), które zapewniają funkcjonalność sieciową dla FPC/Lazarus, wiele przykładów można napisać dla wielu bibliotek. Dlatego możesz zobaczyć te same przykłady wiele razy - dla różnych bibliotek. Spójrz na frameworki Brook dla Free Pascal lub fpctwit, aby zobaczyć przykłady tworzenia frameworków, które mogą korzystać z wielu bibliotek sieciowych
CGI/FastCGI - REST, CRUD, czat, blog, strona internetowa itp.
Tych funkcji można używać z fcl-web. Są również wbudowane do frameworka Brook. Proszę spojrzeć na tą stronę https://github.com/silvioprog/brookframework
Klient SSH/Telnet, wysyłanie e-maili, pobieranie plików, przykłady OAuthv1
Zobacz stronę Synapse.
Przykład serwera WWW
Poniżej podano przykładowy serwer http napisany za pomocą Synapse i przetestowany w Win XP i macOS, po zmianie źródła Synapse tak, aby używał poprawnej stałej $20000 jako MSG_NOSIGNAL, ponieważ ta stała nie występuje w module sockets w systemie macOS. Uwaga: prosimy o przesyłanie raportów o błędach do projektu Synapse - są one dość responsywne - więc każdy zyskuje na ulepszeniach. Do zrobienia: sprawdzić, czy ta modyfikacja jest nadal potrzebna dla obecnej (październik 2012) wersji Synapse
{
Serwer WWW Micro Pascal
To bardzo prosty przykładowy serwer WWW zaimplementowany przy pomocy biblioteki Synapse.
Działa z gniazdami blokującymi i pojedynczym wątkiem, więc
może obsłużyć tylko jedno żądanie w danym momencie.
Zapisuje nagłówki, które otrzymuje z przeglądarki
na standardowe wyjście.
Obsługuje poprawnie stronę internetową dla / URI
Dla jakiegoś innego identyfikatora URI zwróci błąd 404 nie znaleziono
}
program upserver;
{$ifdef fpc}
{$mode delphi}
{$endif}
{$apptype console}
uses
Classes, blcksock, sockets, Synautil, SysUtils;
{@@
Uczestniczy w połączeniu. Czyta nagłówki i daje
właściwą odpowiedź
}
procedure AttendConnection(ASocket: TTCPBlockSocket);
var
timeout: integer;
s: string;
method, uri, protocol: string;
OutputDataString: string;
ResultCode: integer;
begin
timeout := 120000;
WriteLn('Otrzymane nagłówki+dokument z przeglądarki:');
//przeczytaj wiersz żądania
s := ASocket.RecvString(timeout);
WriteLn(s);
method := fetch(s, ' ');
uri := fetch(s, ' ');
protocol := fetch(s, ' ');
//przeczytaj nagłówki żądań
repeat
s := ASocket.RecvString(Timeout);
WriteLn(s);
until s = '';
// Teraz zapisz dokument do strumienia wyjściowego
if uri = '/' then
begin
// Zapisz dokument wyjściowy do strumienia
OutputDataString :=
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'
+ ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + CRLF
+ '<html><h1>Teste</h1></html>' + CRLF;
// Wyślij nagłówki z powrotem do klienta
ASocket.SendString('HTTP/1.0 200' + CRLF);
ASocket.SendString('Content-type: Text/Html' + CRLF);
ASocket.SendString('Content-length: ' + IntTostr(Length(OutputDataString)) + CRLF);
ASocket.SendString('Connection: close' + CRLF);
ASocket.SendString('Date: ' + Rfc822DateTime(now) + CRLF);
ASocket.SendString('Server: Serwer Felipe używający Synapse' + CRLF);
ASocket.SendString('' + CRLF);
// if ASocket.lasterror <> 0 then HandleError;
// Wyślij dokument z powrotem do przeglądarki
ASocket.SendString(OutputDataString);
end
else
ASocket.SendString('HTTP/1.0 404' + CRLF);
end;
var
ListenerSocket, ConnectionSocket: TTCPBlockSocket;
begin
ListenerSocket := TTCPBlockSocket.Create;
ConnectionSocket := TTCPBlockSocket.Create;
ListenerSocket.CreateSocket;
ListenerSocket.setLinger(true,10);
ListenerSocket.bind('0.0.0.0','1500');
ListenerSocket.listen;
repeat
if ListenerSocket.canread(1000) then
begin
ConnectionSocket.Socket := ListenerSocket.accept;
WriteLn('Attending Connection. Error code (0=Success): ', ConnectionSocket.lasterror);
AttendConnection(ConnectionSocket);
ConnectionSocket.CloseSocket;
end;
until false;
ListenerSocket.Free;
ConnectionSocket.Free;
end.Klient TCP/IP — przykład serwera z wbudowanymi komponentami FCL-Net
Proszę spojrzeć na ten wpis na blogu Niestety, ze względu na zależność od biblioteki fp_async, jest ona dostępna tylko w systemie Unix.
Pobierz treść strony HTTP, wyślij dane do serwera WWW za pomocą POST, uzyskaj zewnętrzny adres IP
Te przykłady (przy użyciu FPC/Lazarus wbudowanego w fphttpclient) można znaleźć w przykładach fphttpclient
LazWebsockets
WebSocket to trwałe połączenie między klientem a serwerem. WebSockets zapewniają dwukierunkowy, pełnodupleksowy kanał komunikacyjny, który działa za pośrednictwem protokołu HTTP za pomocą pojedynczego połączenia gniazd TCP/IP. W swej istocie protokół WebSocket ułatwia przekazywanie wiadomości między klientem a serwerem. LazWebsockets zapewnia małą implementację serwera i klienta Websocket napisaną dla FPC i Lazarusa. Serwer ten opiera się na module gniazd FCL, a zatem jest niezależny od wszelkich dodatkowych zależności. Można go łatwo zbudować używając tylko FPC bez Lazarusa. Istnieje przykładowe demo serwera i klienta czatu.
Usługi internetowe
Według W3C usługa sieciowa to system oprogramowania zaprojektowany do obsługi interoperacyjnej interakcji maszyna-maszyna w sieci. Posiada interfejs opisany w formacie przetwarzalnym maszynowo, takim jak WSDL. Inne systemy współdziałają z usługą sieciową w sposób określony przez jej interfejs, używając komunikatów, które mogą być zamknięte w powłoce SOAP lub postępować zgodnie z podejściem REST. Komunikaty te są zazwyczaj przesyłane za pomocą protokołu HTTP i zwykle składają się z XML w połączeniu z innymi standardami związanymi z Internetem. Aplikacje napisane w różnych językach programowania i działające na różnych platformach mogą wykorzystywać usługi sieciowe do wymiany danych w sieciach komputerowych, takich jak Internet, w sposób podobny do komunikacji międzyprocesowej na jednym komputerze. Ta interoperacyjność (np. między aplikacjami Windows i Linux) wynika z użycia otwartych standardów. OASIS i W3C są głównymi komitetami odpowiedzialnymi za architekturę i standaryzację usług sieciowych. Aby poprawić interoperacyjność między wdrożeniami usług internetowych, organizacja WS-I opracowała szereg profili w celu dalszego zdefiniowania odpowiednich standardów.
Przykład RSS
Aby zapoznać się z przykładem RSS, zobacz ten artykuł Moduł RSS.
Web Service Toolkit dla FPC i Lazarusa
Web Service Toolkit to pakiet usług internetowych dla FPC i Lazarusa.
Używanie Tłumacza Google
Aby zapoznać się z przykładem korzystania z usługi tłumaczenia Google, zobacz artykuł Using Google Translate, który wykorzystuje komponent fphttpclient z pakietu fcl-web.
Zobacz także
- Portal do tworzenia stron internetowych
- Brook dla Free Pascal - Idealny framework Free Pascal dla Twoich aplikacji internetowych. To czysty Pascal. Nie musisz porzucać preferowanego języka programowania.
- fcl-net - Biblioteka sieciowa dostarczana z FPC
- fcl-web - Znana również jako fpWeb, jest to biblioteka do tworzenia aplikacji internetowych, które można wdrażać jako moduły cgi, fastcgi lub apache.
- fpbrowser - przeglądarka internetowa napisana w FPC + Lazarus.
- Indy z Lazarusem - Komponenty sieciowe;Poradnik, jak zainstalować
- Narzędzia internetowe - Wrapper wokół komponentów HTTP Synapse/WinInet/Android upraszczający obsługę HTTPS i przekierowań oraz silnik XPath/XQuery/Selektor CSS/JSONiq do przetwarzania pobranych stron.
- FPC i Moduły Apache
- lNet - Lekkie komponenty sieciowe
- Biblioteki sieciowe - porównanie różnych bibliotek sieciowych
- OpenURL - otwiera adres URL z domyślną/zarejestrowaną/preferowaną przeglądarką internetową określoną przez system operacyjny.
- Bezpieczne programowanie
- Sockets - Komponenty gniazd TCP/IP
- Synapse - Port szeregowy i synchroniczna biblioteka TCP/IP
- Poradnik XML - XML jest często używany w komunikacji sieciowej
macOS
- macOS NSURLConnection Ten interfejs API umożliwia ładowanie zawartości adresu URL za pośrednictwem protokołu HTTP i HTTPS przez udostępnienie żądanego obiektu z adresu URL.
- macOS NSURLSession Ta klasa i powiązane klasy zapewniają interfejs API do pobierania treści za pośrednictwem protokołów HTTP i HTTPS.
- polecenie otwarcia w macOS Otwiera adres URL w domyślnej przeglądarce internetowej.
Windows
- WinInet (Internet w Windows) Interfejs API, który umożliwia aplikacji interakcję z protokołami FTP i HTTP w celu uzyskania dostępu do zasobów internetowych.
Linki zewnętrzne
- Fano Framework - Framework aplikacji webowych napisany w Free Pascal.
- FastPlaz - Fast Web Framework dla Pascala. Więcej funkcji, takich jak motyw/szablon, prosty model, sesja, mailer itp.
From the Free Pascal wiki, page "Networking/pl", as it stood on 2021-12-10 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
