Sign in Join
Wiki copytemporary

Networking/pl: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Networking/pl

OldNewLine
1+<div style="font-size:1.88em;margin:0.75em 0;">
2+
3+Sieć
4+
5+</div>
6+
7+Ta strona zawiera zarówno poradniki/kod, jak i informacje dotyczące programowania sieciowego za pomocą Lazarusa oraz zwykłego FPC.
8+
9+## Protokół TCP/IP
10+
11+> **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 for Free Pascal/pl|Brook dla Free Pascal]] lub [fpctwit](https://bitbucket.org/mararosas/fpctwit/src/default/), aby zobaczyć przykłady tworzenia frameworków, które mogą korzystać z wielu bibliotek sieciowych
12+
13+### CGI/FastCGI - REST, CRUD, czat, blog, strona internetowa itp.
14+
15+Tych funkcji można używać z [[fcl-web]]. Są również wbudowane do frameworka Brook. Proszę spojrzeć na [tą stronę](http://silvioprog.github.io/brookframework) <https://github.com/silvioprog/brookframework>
16+
17+### Klient SSH/Telnet, wysyłanie e-maili, pobieranie plików, przykłady OAuthv1
18+
19+Zobacz stronę [[Synapse]].
20+
21+### Przykład serwera WWW
22+
23+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*
24+
25+``` pascal
26+{
27+ Serwer WWW Micro Pascal
28+
29+ To bardzo prosty przykładowy serwer WWW zaimplementowany przy pomocy biblioteki Synapse.
30+
31+ Działa z gniazdami blokującymi i pojedynczym wątkiem, więc
32+ może obsłużyć tylko jedno żądanie w danym momencie.
33+
34+ Zapisuje nagłówki, które otrzymuje z przeglądarki
35+ na standardowe wyjście.
36+
37+ Obsługuje poprawnie stronę internetową dla / URI
38+ Dla jakiegoś innego identyfikatora URI zwróci błąd 404 nie znaleziono
39+
40+}
41+
42+program upserver;
43+
44+{$ifdef fpc}
45+ {$mode delphi}
46+{$endif}
47+
48+{$apptype console}
49+
50+uses
51+ Classes, blcksock, sockets, Synautil, SysUtils;
52+
53+{@@
54+ Uczestniczy w połączeniu. Czyta nagłówki i daje
55+ właściwą odpowiedź
56+}
57+
58+procedure AttendConnection(ASocket: TTCPBlockSocket);
59+var
60+ timeout: integer;
61+ s: string;
62+ method, uri, protocol: string;
63+ OutputDataString: string;
64+ ResultCode: integer;
65+begin
66+ timeout := 120000;
67+
68+ WriteLn('Otrzymane nagłówki+dokument z przeglądarki:');
69+
70+ //przeczytaj wiersz żądania
71+ s := ASocket.RecvString(timeout);
72+ WriteLn(s);
73+ method := fetch(s, ' ');
74+ uri := fetch(s, ' ');
75+ protocol := fetch(s, ' ');
76+
77+ //przeczytaj nagłówki żądań
78+ repeat
79+ s := ASocket.RecvString(Timeout);
80+ WriteLn(s);
81+ until s = '';
82+
83+ // Teraz zapisz dokument do strumienia wyjściowego
84+
85+ if uri = '/' then
86+ begin
87+
88+ // Zapisz dokument wyjściowy do strumienia
89+ OutputDataString :=
90+ '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'
91+ + ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + CRLF
92+ + '<html><h1>Teste</h1></html>' + CRLF;
93+
94+ // Wyślij nagłówki z powrotem do klienta
95+ ASocket.SendString('HTTP/1.0 200' + CRLF);
96+ ASocket.SendString('Content-type: Text/Html' + CRLF);
97+ ASocket.SendString('Content-length: ' + IntTostr(Length(OutputDataString)) + CRLF);
98+ ASocket.SendString('Connection: close' + CRLF);
99+ ASocket.SendString('Date: ' + Rfc822DateTime(now) + CRLF);
100+ ASocket.SendString('Server: Serwer Felipe używający Synapse' + CRLF);
101+ ASocket.SendString('' + CRLF);
102+
103+ // if ASocket.lasterror <> 0 then HandleError;
104+
105+ // Wyślij dokument z powrotem do przeglądarki
106+ ASocket.SendString(OutputDataString);
107+ end
108+ else
109+ ASocket.SendString('HTTP/1.0 404' + CRLF);
110+end;
111+
112+var
113+ ListenerSocket, ConnectionSocket: TTCPBlockSocket;
114+
115+begin
116+ ListenerSocket := TTCPBlockSocket.Create;
117+ ConnectionSocket := TTCPBlockSocket.Create;
118+
119+ ListenerSocket.CreateSocket;
120+ ListenerSocket.setLinger(true,10);
121+ ListenerSocket.bind('0.0.0.0','1500');
122+ ListenerSocket.listen;
123+
124+ repeat
125+ if ListenerSocket.canread(1000) then
126+ begin
127+ ConnectionSocket.Socket := ListenerSocket.accept;
128+ WriteLn('Attending Connection. Error code (0=Success): ', ConnectionSocket.lasterror);
129+ AttendConnection(ConnectionSocket);
130+ ConnectionSocket.CloseSocket;
131+ end;
132+ until false;
133+
134+ ListenerSocket.Free;
135+ ConnectionSocket.Free;
136+end.
137+```
138+
139+### Klient TCP/IP — przykład serwera z wbudowanymi komponentami FCL-Net
140+
141+Proszę spojrzeć na [ten wpis na blogu](http://pascalgeek.blogspot.com/2012/06/encryption-decryption-and-asynchronous.html) Niestety, ze względu na zależność od biblioteki fp_async, jest ona dostępna tylko w systemie Unix.
142+
143+### Pobierz treść strony HTTP, wyślij dane do serwera WWW za pomocą POST, uzyskaj zewnętrzny adres IP
144+
145+Te przykłady (przy użyciu FPC/Lazarus wbudowanego w fphttpclient) można znaleźć w [[fphttpclient|przykładach fphttpclient]]
146+
147+### LazWebsockets
148+
149+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](https://github.com/Warfley/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.
150+
151+## Usługi internetowe
152+
153+Według [W3C](http://www.w3.org/) 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.
154+
155+### Przykład RSS
156+
157+Aby zapoznać się z przykładem RSS, zobacz ten artykuł [[RSS|Moduł RSS]].
158+
159+### Web Service Toolkit dla FPC i Lazarusa
160+
161+[[Web Service Toolkit]] to pakiet usług internetowych dla FPC i Lazarusa.
162+
163+### Używanie Tłumacza Google
164+
165+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]].
166+
167+## Zobacz także
168+
169+- [[Portal:Web Development|Portal do tworzenia stron internetowych]]
170+- [[Brook for Free Pascal/pl|Brook dla Free Pascal]] - Idealny framework Free Pascal dla Twoich aplikacji internetowych. To czysty Pascal. Nie musisz porzucać preferowanego języka programowania.
171+- [[fcl-net]] - Biblioteka sieciowa dostarczana z FPC
172+- [[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.
173+- [[fpbrowser]] - przeglądarka internetowa napisana w FPC + Lazarus.
174+- [[Indy with Lazarus|Indy z Lazarusem]] - Komponenty sieciowe;Poradnik, jak zainstalować
175+- [[Internet Tools|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.
176+- [[FPC and Apache Modules|FPC i Moduły Apache]]
177+- [[lNet]] - Lekkie komponenty sieciowe
178+- [[Networking libraries|Biblioteki sieciowe]] - porównanie różnych bibliotek sieciowych
179+- [[OpenURL]] - otwiera adres URL z domyślną/zarejestrowaną/preferowaną przeglądarką internetową określoną przez system operacyjny.
180+- [[Secure programming|Bezpieczne programowanie]]
181+- [[Sockets]] - Komponenty gniazd TCP/IP
182+- [[Synapse]] - Port szeregowy i synchroniczna biblioteka TCP/IP
183+- [[XML Tutorial|Poradnik XML]] - XML jest często używany w komunikacji sieciowej
184+
185+### macOS
186+
187+- [[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.
188+- [[macOS NSURLSession]] Ta klasa i powiązane klasy zapewniają interfejs API do pobierania treści za pośrednictwem protokołów HTTP i HTTPS.
189+- [[macOS Open Sesame|polecenie otwarcia w macOS]] Otwiera adres URL w domyślnej przeglądarce internetowej.
190+
191+### Windows
192+
193+- [[Windows Programming Tips|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.
194+
195+## Linki zewnętrzne
196+
197+- [Fano Framework](https://fanoframework.github.io) - Framework aplikacji webowych napisany w Free Pascal.
198+- [FastPlaz](http://www.fastplaz.com) - Fast Web Framework dla Pascala. Więcej funkcji, takich jak motyw/szablon, prosty model, sesja, mailer itp.
199+
200+---
201+*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](/wiki-contact).*

Back to history