Networking/pl
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
português (pt) │
русский (ru) │
slovenčina (sk) │
中文(中国大陆) (zh_CN) │
Ta strona zawiera zarówno poradniki/kod, jak i informacje dotyczące programowania sieciowego za pomocą Lazarusa oraz zwykłego FPC.
Protokół TCP/IP
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.