Difference between revisions of "lNet/ru"

From Free Pascal wiki
Jump to navigationJump to search
 
(12 intermediate revisions by the same user not shown)
Line 64: Line 64:
 
----
 
----
  
== Installation ==
+
== Установка визуального пакета в Lazarus ==
LNet 0.5+:
+
* запускаем Lazarus, перейдите в раздел «Компоненты/откройте файл пакета» (*.lpk).
* In the lazarus/components directory, unzip the files from lnet-<version>.zip file. The lnet-<version> folder will be created.
+
* открываем lnetvisual.lpk и устанавливаем
* Open Lazarus
+
* перезапускаем Лазарус
* Open the package lnet-<version>/lazaruspackage/lnetvisual.lpk with Package/Open package file (.lpk)
 
* Click on Use/Install and answer 'Yes' when you are asked about Lazarus rebuilding. A new tab named 'lNet' will be created in the components palette.
 
{{Note| users who don't want to depend on LCL but use LNet in Lazarus (non-visually), can just compile lnetbase.lpk, which adds all the base units to path.}}
 
  
LNet 0.4:
+
Если вы хотите использовать LNet в своем проекте, просто скопируйте куда-нибудь каталог ''lib'' и поместите его в путь поиска модулей компилятора с параметрами -Fu и -Fi для подкаталога ''lib/sys''.
* In the lazarus/components directory, unzip the files from lnet-<version>.zip file. The lnet-<version> folder will be created.
+
 
* Open Lazarus
+
==Содержимое пакета==
* Open the package lnet-<version>/lazaruspackage/lnetpackage.lpk with Package/Open package file (.lpk)
+
 
* Click on Compile
+
Пакет состоит из базовой библиотеки модулей lNet, lTelnet для протокола telnet, lFTP для протокола ftp и библиотек lNetComponents для предоставления визуальных и невизуальных компонентов для работы в сети. Начиная с версии 0.4.0 были добавлены компоненты lHTTP и lSMTP. Начиная с версии 0.5.1 в библиотеке есть поддержка MIME, в основном для создания составных сообщений для SMTP. Начиная с версии 0.6.0 lNet поддерживает SSL по модульному принципу, а протокол SMTP был расширен до полной поддержки SSL/TLS (включая согласование STARTTLS во время выполнения). Клиентская часть HTTPS также поддерживается.
* Open the package lnet-<version>/lazaruspackage/ide/lnetidepackage.lpk with Package/Open package file (.lpk)
 
* Click on Use/Install and answer 'Yes' when you are asked about Lazarus rebuilding. A new tab named 'lNet' will be created in the components palette.
 
{{Note| older lNet is extraced to "lnetpackage" dir. Since 0.4.0 the "visual" and "non visual" packages are in one distribution file.}}
 
  
==Package contents==
+
==Тестирование==
The package consists of base lNet units library, lTelnet for telnet protocol, lFTP for ftp protocol and lNetComponents libraries for providing visual and non-visual components for networking. As of 0.4.0 lHTTP and lSMTP components have been added. Since 0.5.1 there's a MIME support as part of the library mainly for creation of multipart messages for SMTP. Since 0.6.0 lNet supports SSL in a modular way, and SMTP protocol has been extended to full support of SSL/TLS (including runtime STARTTLS negotiation). HTTPS client side is supported too.
 
  
==Testing==
+
Невизуальные консольные компоненты были протестированы на Win32, Win64, Linux_x86_32, Linux_x86_64, Linux_PPC, Linux_PPC_64, Linux_ARM* (2.1.4+) и FreeBSD_x86_32.
The non-visual console components were tested on Win32, Win64, Linux_x86_32, Linux_x86_64, Linux_PPC, Linux_PPC_64, Linux_ARM* (2.1.4+) and FreeBSD_x86_32.
+
Визуальные компоненты (пакеты Lazarus) были протестированы в Win32, Win64, ARM/WinCE, Linux_x86_32, Linux_x86_64 и FreeBSD_x86_32. (gtk1 и gtk2 на unix платформах)
The visual (Lazarus packages) components were tested in Win32, Win64, ARM/WinCE, Linux_x86_32, Linux_x86_64 and FreeBSD_x86_32. (gtk1 and gtk2 on unix platforms)
 
  
==History==
+
==История изменений==
  
 
* March 2011: A new version of lNet was just released. 0.6.5 completes SSL and IPv6 support including server-side and per-socket (for SSL) setting. SSL and IPv6 bugs were fixed as well as some remaining disconnect problems related to server bind errors and lingering sockets. DecodeURL bug introduced in 0.6.4 was also fixed.
 
* March 2011: A new version of lNet was just released. 0.6.5 completes SSL and IPv6 support including server-side and per-socket (for SSL) setting. SSL and IPv6 bugs were fixed as well as some remaining disconnect problems related to server bind errors and lingering sockets. DecodeURL bug introduced in 0.6.4 was also fixed.
Line 102: Line 94:
 
* April 2008: 0.6.1 has been released today. This release fixes an ugly SSL logical bug in regards to the mandatory requirements of Certificate Authority List file and Keyfile proprties of SSLSession. They are no longer needed for normal SSL to work. A minor change in HTTP and handling of SSLSession are also present.
 
* April 2008: 0.6.1 has been released today. This release fixes an ugly SSL logical bug in regards to the mandatory requirements of Certificate Authority List file and Keyfile proprties of SSLSession. They are no longer needed for normal SSL to work. A minor change in HTTP and handling of SSLSession are also present.
  
== Stability ==
+
== Надежность кода ==
  
 
* Base lNet TCP/UDP - stable
 
* Base lNet TCP/UDP - stable
Line 115: Line 107:
 
* IPv6 support - stable (0.6.5+)
 
* IPv6 support - stable (0.6.5+)
  
<nowiki>*</nowiki> FTP and Telnet still need some additional features like authentication methods.
+
<nowiki>*</nowiki> FTP и Telnet по-прежнему нуждаются в некоторых дополнительных функциях, таких как методы аутентификации.
  
On Linux, since you start using LNet, GDB can crash randomly (upon compilations) with diverse kind of reports. Setting debugger to Automatic in both lnetbase and lnetvisual package's options fixes the issue.
+
В Linux, когда вы начинаете использовать LNet, GDB может случайно (при компиляции) аварийно завершить работу с различными типами сообщений. Установка для отладчика значения «Автоматически» в параметрах пакетов lnetbase и lnetvisual устраняет проблему.
  
== Roadmap ==
+
== Дорожная карта ==
Items that are <s>struck through</s> have been completed in the indicated version:
+
<s>Зачеркнутые</s> пункты в указанном варианте уже реализованы:
* Stress testing [always]
+
* Стресс-тестирование [всегда]
 
* <s>Addition of Telnet and FTP clients (experimental level) [0.3]</s> (done)
 
* <s>Addition of Telnet and FTP clients (experimental level) [0.3]</s> (done)
 
* <s>Cementing of TCP/UDP API [0.3]</s> (done)
 
* <s>Cementing of TCP/UDP API [0.3]</s> (done)
  
* Addition of ICMP Ping/Traceroute protocol [na] (cancelled due to various reasons*)
+
* Добавление протокола ICMP Ping/Traceroute [na] (отменено по разным причинам*)
 
* <s>Addition of SMTP, HTTP components [0.4]</s> (done)
 
* <s>Addition of SMTP, HTTP components [0.4]</s> (done)
 
* <s>Stabilization of Telnet and FTP clients [0.5]</s> (done)
 
* <s>Stabilization of Telnet and FTP clients [0.5]</s> (done)
 
* <s>Addition of MIME streams [0.5.1]</s> (done)
 
* <s>Addition of MIME streams [0.5.1]</s> (done)
* Addition of Telnet and FTP servers (experimental level) [???]
+
* Добавление Telnet и FTP серверов (экспериментальный уровень) [???]
 
* <s>Addition of SSL [0.6+]</s> (done)
 
* <s>Addition of SSL [0.6+]</s> (done)
* Addition of Carbon and/or Cocoa widget set support [0.7+]
+
* Добавлена ​​поддержка набора виджетов Carbon и/или Cocoa [0.7+]
 
* <s>Addition of Qt4 widget set support [0.6.4+]</s> (done)
 
* <s>Addition of Qt4 widget set support [0.6.4+]</s> (done)
 
* Cleanup of SSL/HTTP (so pure HTTP doesn't depend on TLSSLSocket) [0.6.x?]
 
* Cleanup of SSL/HTTP (so pure HTTP doesn't depend on TLSSLSocket) [0.6.x?]
  
<nowiki>*</nowiki> PING requires raw sockets which are only accessible to root on unix/linux platforms. It was decided that lNet won't support this, users who need PING should use the ping and ping6 programs via TProcess.
+
<nowiki>*</nowiki>Для PING требуются необработанные сокеты, которые доступны только root на платформах unix/linux. Было решено, что lNet не будет поддерживать это, пользователи, которым нужен PING, должны использовать программы ping и ping6 через TProcess.
  
== Requirements ==
+
== Требования ==
 
LNet 0.6+:
 
LNet 0.6+:
 
* Lazarus 0.9.24+ and FPC 2.2.0+
 
* Lazarus 0.9.24+ and FPC 2.2.0+
Line 153: Line 145:
 
* Issues: Completely tested on Windows (WinXP), Linux (Ubuntu 6.06LTS) and FreeBSD 6.1. HTTP server has issues under high load with fastcgi usage. FastCGI works only in Linux for now.
 
* Issues: Completely tested on Windows (WinXP), Linux (Ubuntu 6.06LTS) and FreeBSD 6.1. HTTP server has issues under high load with fastcgi usage. FastCGI works only in Linux for now.
  
=== Ubuntu special notice ===
+
=== Специальное уведомление под Ubuntu ===
  
Some "missing files" are, in fact, in the "/net" subfolder and are not found by the fpc compiler. Simply copy missing files from the subfolder (lnet.pas, tomwinsock.pas, lfunc.inc...) "/usr/lib/lazarus/components/lnetpackage/lnet" in the "/usr/lib/lazarus/components/lnetpackage" folder (adjust paths as necessary). Then complete the setup by following the installation procedure. (by Steph12358)
+
Некоторые «отсутствующие файлы» фактически находятся в подпапке «/net» и не обнаруживаются компилятором fpc. Просто скопируйте недостающие файлы из подпапки (lnet.pas, tomwinsock.pas, lfunc.inc...) '/usr/lib/lazarus/comComponents/lnetpackage/lnet' в '/usr/lib/lazarus/comComponents/lnetpackage'. ' (при необходимости измените пути). Затем завершите настройку, следуя процедуре установки. (от Steph12358)
  
== API changes ==
+
== Изменения в API ==
  
'''0.1 to 0.2'''
+
'''0.1 до 0.2'''
* There have been some API changes from 0.1 to 0.2. These were required and should improve the usability of packages. I know API changes are always a PITA but I'll try to keep them minimal from now on. Version 0.3 will be the first beta from which API will remain unchanged (only adding new stuff will be possible).
+
* Были внесены некоторые изменения в API с версии 0.1 до 0.2. Это было необходимо и должно улучшить удобство использования пакетов. Я знаю, что изменения API — это всегда головная боль (PITA - аббр. pain in the ass), но с этого момента я постараюсь свести их к минимуму. Версия 0.3 будет первой бета-версией, API которой останется неизменным (возможно будет только добавление новых вещей).
* OnRecieve() changed to OnReceive()
+
* <code>OnRecieve()</code> изменен на <code>OnReceive()</code>.
* Accept() changed to Listen()
+
* <code>Accept()</code> изменен на <code>Listen()</code>.
* All events' arguments changed. SocketNumber (int) got changed into aSocket(TLSocket) because of logical and speed reasons
+
* Аргументы всех событий изменены. <code>SocketNumber(int)</code> был изменен на <code>aSocket(TLSocket)</code> по логическим соображениям и причинам скорости.
  
'''0.2 to 0.3'''
+
'''0.2 до 0.3'''
* Added OnCanSend and OnConnect. Connect is now non-blocking.
+
* Добавлены <code>OnCanSend</code> и <code>OnConnect</code>. Connect теперь не блокируется.
* Removed buffersize and maxmsgs. Buffersize is no longer required because no internal buffer is used.
+
* Удалены <code>buffersize</code> и <code>maxmsgs</code>. <code>buffersize</code> больше не требуется, поскольку внутренний буфер не используется.
  
'''0.3 to 0.4'''
+
'''0.3 до 0.4'''
* Lots of additions. Only "breakage" is that TLSocket.Port got changed into TLSocket.LocalPort and TLSocket.PeerPort for consistency reasons.
+
* Множество дополнений. Единственная «поломка» заключается в том, что <code>TLSocket.Port</code> был изменен на <code>TLSocket.LocalPort</code> и <code>TLSocket.PeerPort</code> по соображениям согласованности.
  
'''0.4 to 0.5'''
+
'''0.4 до 0.5'''
* We did some API cleanup which resulted in API breakage.
+
* Мы провели некоторую очистку API, которая привела к поломке API.
* All "connection" classes now descend from TLComponent
+
* Все классы "connection" теперь происходят от TLComponent.
* TLSocket now has a .Creator which is a TLComponent property specifying the creator (eg: TLTcp), so you can see now which socket in an event belongs to which connection.
+
* <code>TLSocket</code> теперь имеет свойство <code>.Creator</code>, который является свойством <code>TLComponent</code>, определяющим создателя (например, <code>TLTcp</code>), поэтому теперь вы можете видеть, какой сокет в событии принадлежит какому соединению.
* Added "Connect()" and "Listen()" parameterless calls to all connections. This is mostly to enable Lazarus visual style, so people can use .Host and .Port properties and repeatedly just call ".Connect()" for example.
+
* Добавлены вызовы без параметров <code>Connect()</code> и <code>Listen()</code> для всех соединений. В основном это делается для того, чтобы включить визуальный стиль Lazarus, чтобы люди могли использовать свойства <code>.Host</code> и <code>.Port</code> и неоднократно просто вызывать, например, <code>.Connect()</code>.
* Added "StatusSet" set to SMTP and FTP components. This enables you to monitor specific FTP or SMTP actions and their results with events OnSuccess and OnFailure. You set the events to be watched in the set, and get results in one of the callbacks.
+
* Добавлен набор <code>StatusSet</code> для компонентов SMTP и FTP. Это позволяет отслеживать определенные действия FTP или SMTP и их результаты с помощью событий <code>OnSuccess</code> и <code>OnFailure</code>. Вы устанавливаете события для просмотра в наборе и получаете результаты в одном из обратных вызовов.
* <b>Changed ALL callbacks which didn't use TLSocket as sender to use it. This means all FTP, SMTP and HTTP events which had "Sender: TL<HigherType>" were reverted to basic Socket style callbacks!</b>
+
* <b>Изменены ВСЕ обратные вызовы, которые не использовали TLSocket в качестве отправителя, чтобы использовать его. Это означает, что все события FTP, SMTP и HTTP, которые имели стиль "Sender: TL<HigherType>", были возвращены к базовым обратным вызовам в стиле Socket!</b>
  
'''0.5.4- to 0.5.5+'''
+
'''0.5.4- до 0.5.5+'''
* Some minor API changes were made which shouldn't break anything but I list them to be on the safe side.
+
* Были внесены некоторые незначительные изменения в API, которые не должны ничего нарушить, но я перечисляю их на всякий случай.
* .Timeout property on eventers and connections was set to Integer (from DWord) to support -1 as "block until an event happens"
+
* Свойство <code>.Timeout</code> для событий и соединений было задано как Integer (из DWord) для поддержки -1 как «блокировки до тех пор, пока не произойдет событие».
  
'''0.5 to 0.6'''
+
'''0.5 до 0.6'''
* No changes in public API, only additions.
+
* Никаких изменений в публичном API, только дополнения.
  
'''Note for 0.4.0''': In version 0.4.0, I forgot to move lHTTPSettings unit from lib to the http example. It was NOT supposed to be a part of the library, just the example. DON'T use this, it's not a "library", it's a part of the example (http server will get it's own project later)
+
{{Note | В версии 0.4.0 я забыл переместить модуль lHTTPSettings из библиотеки в пример http. Он НЕ должен был быть частью библиотеки, просто примером. НЕ используйте это, это не «библиотека», это часть примера (http-сервер получит собственный проект позже)
 +
}}
  
== lNet for FreeBSD, Linux, macOS and Windows ==
+
== lNet для FreeBSD, Linux, macOS и Windows ==
  
* [https://github.com/trevoz/lnet lNet for FreeBSD, Linux, macOS and Windows]  
+
* [https://github.com/trevoz/lnet lNet для FreeBSD, Linux, macOS и Windows] от trevoz
** Many changes so that the library will now compile on the above with FPC 3.2.2 or FPC 3.3.1.
+
** Множество изменений: теперь библиотека будет компилироваться с помощью FPC 3.2.2 или FPC 3.3.1.
** TLSv1.3 added
+
** Добавлен TLSv1.3.
** Linux TLS is not working due to an epoll problem in the file <tt>lib/sys/lepolleventer.inc</tt>
+
** Linux TLS не работает из-за проблемы с e-poll в файле <tt>lib/sys/lepolleventer.inc</tt>.
** The console examples compile (I have tested the SMTP example which was what I was after).  
+
** Примеры консоли компилируются (я протестировал пример SMTP, который мне и нужен).
** The visual component examples do not compile for macOS - there are no Cocoa, or even defunct Carbon, interface bindings.
+
** Примеры визуальных компонентов не компилируются для macOS — в них нет привязок интерфейса Cocoa или даже несуществующего Carbon.
  
== See also ==
+
== См.также ==
  
 
* [[lNet examples]]
 
* [[lNet examples]]

Latest revision as of 18:10, 11 September 2023

English (en) русский (ru)

О компоненте

lNet или Lightweight Networking Library представляет собой набор классов и компонентов для включения управляемых событиями сетей TCP или UDP.

Авторы:

Лицензия: modified LGPL license (разрешает статическое связывание).

Загрузка

Существует два варианта библиотеки, которые больше полностью не синхронизируются:

  • lNet package. Упакованы в виде утилит для использования самого проекта FPC. Они не рекомендуются для общего использования.
  • https://lnet.wordpress.com/ (перемещен на GitHub).

Вы можете связаться с автором напрямую по электронной почте или перейти на канал #lnet на freenode.

Использование

Бросьте TLTCPComponent или TLUDPComponent на форму. Назначьте обработчики событий OnAccept, OnError, OnReceive, OnConnect и OnDisconnect. Обратите внимание, что это необязательно, но в большинстве случаев требуется для реализации функционала.

Клиентское соединение инициализируется вызовом Connect. Аргументами являются IP-адрес/имя хоста и порт соответственно. Используется неблокирующее соединение, это означает, что вы «НЕ» знаете, что вы подключены, пока случится событие OnConnect.

Соединение с сервером инициализируется вызовом Listen. Аргумент — порт.

Light bulb  Примечание: адрес — это строковое представление IP-адреса, например: '127.0.0.1' или имя хоста, например 'localhost'.

Отправка данных другой стороне осуществляется с помощью метода Send/SendMessage.

События TLNetComponent

  • OnError - это событие вызывается всякий раз, когда возникает ошибка соединения. Если обработчик не назначен, возникает исключение с "msg". Аргументы: msg — содержит строковое и числовое представление сообщения об ошибке, отформатированное в собственной кодировке или UTF8 (в зависимости от свойства ForceUTF8). aSocket — это сокет, в котором произошла ошибка, ноль означает, что ошибка не связана с конкретным сокетом.
  • OnConnect - это событие генерируется при успешном подключении клиента. aSocket — это сокет, к которому подключились. Он должен служить «отправной точкой» для клиентов.
  • OnAccept - это событие вызывается всякий раз, когда на сервере принимается соединение. Если обработчик не назначен, ничего не происходит. aSocket содержит сокет, который принял соединение.
  • OnDisconnect - это событие вызывается всякий раз, когда соединение разорвано. Если обработчик не назначен, ничего не происходит. aSocket содержит сокет, соединение с которым было разорвано.
  • OnReceive - это событие вызывается всякий раз, когда новые данные «готовы к приему». Если обработчик не назначен, ничего не происходит, но может произойти заполнение системного буфера, что, в свою очередь, вызовет событие OnError. aSocket — сокет, через который были получены данные. Данные считываются методом Get/GetMessage.
  • OnCanSend - это событие вызывается всякий раз, когда новые данные могут быть снова отправлены в сокет после сбоя вызова функции отправки и возврата 0. Его можно использовать для автоматизации отправки больших фрагментов. aSocket — это сокет, через который можно вызвать отправку.

Документация

Документация по lNet частично завершена. Вы также можете использовать диаграммы классов Jesus и модулей в качестве основного справочника.

Документация по протоколам eventer и TCP/UDP.: http://members.chello.sk/ales/docs (Archived version at archive.org}

Обзорные схемы можно найти здесь.: http://members.chello.sk/ales/docs/diagrams/overview.html
Pictures:
New class diagram
All classes
lNet units
lNet units 2

Зеркало документов и текущие заметки: http://z505.com/cgi-bin/powtils/docs/1.6/idx.cgi?file=lnetlufdoc


Прим.переводчика: большинство ссылок старые, потому - битые. На гитхабе есть демки и документация в виде xml-файла


Установка визуального пакета в Lazarus

  • запускаем Lazarus, перейдите в раздел «Компоненты/откройте файл пакета» (*.lpk).
  • открываем lnetvisual.lpk и устанавливаем
  • перезапускаем Лазарус

Если вы хотите использовать LNet в своем проекте, просто скопируйте куда-нибудь каталог lib и поместите его в путь поиска модулей компилятора с параметрами -Fu и -Fi для подкаталога lib/sys.

Содержимое пакета

Пакет состоит из базовой библиотеки модулей lNet, lTelnet для протокола telnet, lFTP для протокола ftp и библиотек lNetComponents для предоставления визуальных и невизуальных компонентов для работы в сети. Начиная с версии 0.4.0 были добавлены компоненты lHTTP и lSMTP. Начиная с версии 0.5.1 в библиотеке есть поддержка MIME, в основном для создания составных сообщений для SMTP. Начиная с версии 0.6.0 lNet поддерживает SSL по модульному принципу, а протокол SMTP был расширен до полной поддержки SSL/TLS (включая согласование STARTTLS во время выполнения). Клиентская часть HTTPS также поддерживается.

Тестирование

Невизуальные консольные компоненты были протестированы на Win32, Win64, Linux_x86_32, Linux_x86_64, Linux_PPC, Linux_PPC_64, Linux_ARM* (2.1.4+) и FreeBSD_x86_32. Визуальные компоненты (пакеты Lazarus) были протестированы в Win32, Win64, ARM/WinCE, Linux_x86_32, Linux_x86_64 и FreeBSD_x86_32. (gtk1 и gtk2 на unix платформах)

История изменений

  • March 2011: A new version of lNet was just released. 0.6.5 completes SSL and IPv6 support including server-side and per-socket (for SSL) setting. SSL and IPv6 bugs were fixed as well as some remaining disconnect problems related to server bind errors and lingering sockets. DecodeURL bug introduced in 0.6.4 was also fixed.
  • May 2010: A new version of lNet was just released. 0.6.4 adds Qt4 support inside Lazarus (lazarus latest trunk needed, 0.9.30 should be 1st stable with it). There were also numerous fixes (http URL parsing, FTP problems) and one major bug fixed (WinCE compilation with FPC 2.4.0+). Grab it at SVN, packages will be uploaded ASAP.
  • February 2010: Well there’s a skip in dates. Anyways version 0.6.3 of lNet has been released, you can find it in the downloads section. There’s been various bugfixes and file renames to avoid FPC conflicts. I didn’t find the time to do the QT4 port as I wanted but it’s in the works now. Some SSL fixes were made as well.
  • May 2008: Where to begin? This is a HUGE critical bugfix release. There was about 5 big bugs fixed in SSL section, one logical oversight in Session support. OpenSSL unit was added so WinCE compiles again and SMTP and FTP got bugs fixed in regards to possible desynchronization. I'd urge everyone who uses 0.6.x to update ASAP, but some bugs are also from 0.5.x (specifically the SMTP and FTP event deadlock problem).
  • May 2008: It seems that due to an oversight in what's packaged with FPC and for which platform, lNet 0.6.x doesn't currently compile on WinCE due to missing OpenSSL unit. The unit is in fpc 2.2.0, but is not compiled for that platform yet (it is in 2.2.1+). I will add the unit to lNet and release 0.6.2 shortly, but until then, WinCE users can work around this by copying this file into their lnetdir/lib directory. (same will be done in 0.6.2 so don't worry)
  • April 2008: 0.6.1 has been released today. This release fixes an ugly SSL logical bug in regards to the mandatory requirements of Certificate Authority List file and Keyfile proprties of SSLSession. They are no longer needed for normal SSL to work. A minor change in HTTP and handling of SSLSession are also present.

Надежность кода

  • Base lNet TCP/UDP - stable
  • Telnet Client - stable*
  • FTP Client - stable*
  • SMTP Client - stable
  • HTTP Client - stable
  • HTTP Server - experimental
  • MIME streams - stable
  • SSL support (client-side) - stable
  • SSL support (server-side) - stable (0.6.5+)
  • IPv6 support - stable (0.6.5+)

* FTP и Telnet по-прежнему нуждаются в некоторых дополнительных функциях, таких как методы аутентификации.

В Linux, когда вы начинаете использовать LNet, GDB может случайно (при компиляции) аварийно завершить работу с различными типами сообщений. Установка для отладчика значения «Автоматически» в параметрах пакетов lnetbase и lnetvisual устраняет проблему.

Дорожная карта

Зачеркнутые пункты в указанном варианте уже реализованы:

  • Стресс-тестирование [всегда]
  • Addition of Telnet and FTP clients (experimental level) [0.3] (done)
  • Cementing of TCP/UDP API [0.3] (done)
  • Добавление протокола ICMP Ping/Traceroute [na] (отменено по разным причинам*)
  • Addition of SMTP, HTTP components [0.4] (done)
  • Stabilization of Telnet and FTP clients [0.5] (done)
  • Addition of MIME streams [0.5.1] (done)
  • Добавление Telnet и FTP серверов (экспериментальный уровень) [???]
  • Addition of SSL [0.6+] (done)
  • Добавлена ​​поддержка набора виджетов Carbon и/или Cocoa [0.7+]
  • Addition of Qt4 widget set support [0.6.4+] (done)
  • Cleanup of SSL/HTTP (so pure HTTP doesn't depend on TLSSLSocket) [0.6.x?]

*Для PING требуются необработанные сокеты, которые доступны только root на платформах unix/linux. Было решено, что lNet не будет поддерживать это, пользователи, которым нужен PING, должны использовать программы ping и ping6 через TProcess.

Требования

LNet 0.6+:

  • Lazarus 0.9.24+ and FPC 2.2.0+
  • Status: Beta
  • Issues: Completely tested on Windows (WinXP), Linux (Ubuntu 7.10). FastCGI considered broken for now.

LNet 0.5:

  • Lazarus 0.9.22+ and FPC 2.0.4+
  • Status: Beta
  • Issues: Completely tested on Windows (WinXP), Linux (Ubuntu 6.10) and FreeBSD 5.5. FastCGI considered broken for now. WinCE requires Lazarus 0.9.23+ to compile!

LNet 0.4:

  • Lazarus 0.9.18+ and FPC 2.0.4+
  • Status: Beta
  • Issues: Completely tested on Windows (WinXP), Linux (Ubuntu 6.06LTS) and FreeBSD 6.1. HTTP server has issues under high load with fastcgi usage. FastCGI works only in Linux for now.

Специальное уведомление под Ubuntu

Некоторые «отсутствующие файлы» фактически находятся в подпапке «/net» и не обнаруживаются компилятором fpc. Просто скопируйте недостающие файлы из подпапки (lnet.pas, tomwinsock.pas, lfunc.inc...) '/usr/lib/lazarus/comComponents/lnetpackage/lnet' в '/usr/lib/lazarus/comComponents/lnetpackage'. ' (при необходимости измените пути). Затем завершите настройку, следуя процедуре установки. (от Steph12358)

Изменения в API

0.1 до 0.2

  • Были внесены некоторые изменения в API с версии 0.1 до 0.2. Это было необходимо и должно улучшить удобство использования пакетов. Я знаю, что изменения API — это всегда головная боль (PITA - аббр. pain in the ass), но с этого момента я постараюсь свести их к минимуму. Версия 0.3 будет первой бета-версией, API которой останется неизменным (возможно будет только добавление новых вещей).
  • OnRecieve() изменен на OnReceive().
  • Accept() изменен на Listen().
  • Аргументы всех событий изменены. SocketNumber(int) был изменен на aSocket(TLSocket) по логическим соображениям и причинам скорости.

0.2 до 0.3

  • Добавлены OnCanSend и OnConnect. Connect теперь не блокируется.
  • Удалены buffersize и maxmsgs. buffersize больше не требуется, поскольку внутренний буфер не используется.

0.3 до 0.4

  • Множество дополнений. Единственная «поломка» заключается в том, что TLSocket.Port был изменен на TLSocket.LocalPort и TLSocket.PeerPort по соображениям согласованности.

0.4 до 0.5

  • Мы провели некоторую очистку API, которая привела к поломке API.
  • Все классы "connection" теперь происходят от TLComponent.
  • TLSocket теперь имеет свойство .Creator, который является свойством TLComponent, определяющим создателя (например, TLTcp), поэтому теперь вы можете видеть, какой сокет в событии принадлежит какому соединению.
  • Добавлены вызовы без параметров Connect() и Listen() для всех соединений. В основном это делается для того, чтобы включить визуальный стиль Lazarus, чтобы люди могли использовать свойства .Host и .Port и неоднократно просто вызывать, например, .Connect().
  • Добавлен набор StatusSet для компонентов SMTP и FTP. Это позволяет отслеживать определенные действия FTP или SMTP и их результаты с помощью событий OnSuccess и OnFailure. Вы устанавливаете события для просмотра в наборе и получаете результаты в одном из обратных вызовов.
  • Изменены ВСЕ обратные вызовы, которые не использовали TLSocket в качестве отправителя, чтобы использовать его. Это означает, что все события FTP, SMTP и HTTP, которые имели стиль "Sender: TL<HigherType>", были возвращены к базовым обратным вызовам в стиле Socket!

0.5.4- до 0.5.5+

  • Были внесены некоторые незначительные изменения в API, которые не должны ничего нарушить, но я перечисляю их на всякий случай.
  • Свойство .Timeout для событий и соединений было задано как Integer (из DWord) для поддержки -1 как «блокировки до тех пор, пока не произойдет событие».

0.5 до 0.6

  • Никаких изменений в публичном API, только дополнения.

Light bulb  Примечание: В версии 0.4.0 я забыл переместить модуль lHTTPSettings из библиотеки в пример http. Он НЕ должен был быть частью библиотеки, просто примером. НЕ используйте это, это не «библиотека», это часть примера (http-сервер получит собственный проект позже)

lNet для FreeBSD, Linux, macOS и Windows

  • lNet для FreeBSD, Linux, macOS и Windows от trevoz
    • Множество изменений: теперь библиотека будет компилироваться с помощью FPC 3.2.2 или FPC 3.3.1.
    • Добавлен TLSv1.3.
    • Linux TLS не работает из-за проблемы с e-poll в файле lib/sys/lepolleventer.inc.
    • Примеры консоли компилируются (я протестировал пример SMTP, который мне и нужен).
    • Примеры визуальных компонентов не компилируются для macOS — в них нет привязок интерфейса Cocoa или даже несуществующего Carbon.

См.также