Indy

Die Indy-Bibliothek ist eine quelloffene Client/Server-Kommunikationsbibliothek, die TCP/UDP/RAW-Sockets sowie über 100 höhere Protokolle unterstützt, einschließlich SMTP, POP3, IMAP, NNTP, HTTP, FTP und viele mehr. Indy ist in Delphi geschrieben, aber auch für C++Builder und FreePascal verfügbar. sgcWebSockets verwendet Indy als Basis für einige Komponenten, und die verschiedenen sgcWebSockets-Editionen machen einen unterschiedlichen Gebrauch von der Indy-Bibliothek.

 

sgcWebSockets unterstützt Protokolle wie HTTP/2, die die Verwendung von ALPN erfordern, kann TLS 1.3 mit openSSL 1.1.1 oder openSSL 3.0.0 verwenden ... all diese Funktionen werden von der Standard-Indy-Bibliothek nicht unterstützt, daher enthält die sgcWebSockets Enterprise Edition eine angepasste Indy-Bibliothek, die diese Funktionen unterstützt. Um zu vermeiden, dass die Standard-Indy-Bibliothek aus der IDE deinstalliert werden muss, werden die erforderlichen Indy-Dateien durch Hinzufügen des Präfixes "sgc" umbenannt; so wird zum Beispiel die Unit "IdGlobal" in "sgcIdGlobal" umbenannt. Auf diese Weise können beide Versionen problemlos koexistieren.

 

Nachfolgend finden Sie, welche Indy-Version von jeder sgcWebSockets-Edition verwendet wird:

 

sgcWebSockets Edition Indy-Version
STANDARD Standard
PROFESSIONAL Standard
ENTERPRISE Benutzerdefiniert

 

Kunden mit "Registered"-Lizenzen, also alten Lizenzen aus der Zeit vor der Aufteilung des sgcWebSockets-Pakets, finden die folgenden sgcWebSockets-Paketversionen:

 

sgcWebSockets Edition Indy-Version
sgcWebSockets Standard
sgcWebSockets min Standard
sgcWebSockets min Indy* Benutzerdefiniert

 

*Das sgcWebSockets_min_indy ist identisch mit der sgcWebSockets Enterprise Edition.

 

Die Verwendung der benutzerdefinierten Indy-Version ist in der Datei "sgcVer.inc" im Quellordner definiert. Es gibt ein Compiler-Define namens "SGC_CUSTOM_INDY", das die Verwendung dieser Indy-Version aktiviert oder deaktiviert. Wenn Sie eine Enterprise Edition haben und die Verwendung des benutzerdefinierten Indy deaktivieren möchten, löschen Sie einfach das folgende Compiler-Define:

 

{$DEFINE SGC_CUSTOM_INDY}

 

Natürlich funktioniert dieser Compiler-Define nicht, wenn Sie SGC_CUSTOM_INDY aktivieren, aber im Quellordner nicht über die erforderlichen benutzerdefinierten Indy-Versions-Units verfügen.

 

sgcIndy-Package

Die Verwendung der benutzerdefinierten Indy-Version ist nicht auf die sgcWebSockets-Komponenten beschränkt. Einige Kunden möchten die neuen Funktionen dieser benutzerdefinierten Indy-Version in standardmäßigen Indy-Komponenten wie SMTP nutzen, sodass sie zum Beispiel TLS 1.3 beim Senden von E-Mails verwenden können, FTP-Server nutzen usw. Die eSeGeCe ALL-ACCESS Edition bietet ein zusätzliches vollständiges Indy-Paket mit all diesen Funktionen. Dieses Paket, "sgcIndy package" genannt, enthält die vollständige Indy-Bibliothek mit Unterstützung für OpenSSL 1.1.1 und OpenSSL 3.0.0. Sie müssen also zuerst Ihre aktuell in Ihrer IDE installierte Indy-Bibliothek deinstallieren und dann diese Version installieren; der Prozess zur Installation des sgcIndy package ist genau derselbe wie für jede Indy-Bibliothek (hier werden die Units nicht umbenannt).

 

Wenn Sie OpenSSL-Bibliotheken verwenden möchten, setzen Sie einfach die globale Variable OPENSSL_API_VERSION auf die gewünschte OpenSSL-API-Version, bevor Sie die OpenSSL-Bibliotheken laden. Diese globale Variable befindet sich in der Unit IdSSLOpenSSLHeaders.

 

Beispiel: um die OpenSSL-1.1.1-Bibliotheken zu verwenden

 

OPENSSL_API_VERSION := opSSL_1_1;

 

 

So verwenden Sie ein einzelnes sgcIndy-Paket

Bei Verwendung von eSeGeCe ALL-ACCESS und dem sgcIndy-Paket in derselben Anwendung können die Quellen dupliziert werden, da die sgcWebSockets-Enterprise-Version eine benutzerdefinierte Indy-Version mit umbenannten Indy-Units verwendet. Das bedeutet, dass zum Beispiel Units wie sgcIdGlobal.pas und IdGlobal.pas in derselben Anwendung kompiliert werden (die erste wird verwendet, wenn eine beliebige Komponente des sgcWebSockets-Enterprise-Pakets verwendet wird, und die zweite, wenn eine beliebige Komponente des sgcIndy-Pakets wie ftp, smtp... verwendet wird).

 

Um dieses Verhalten zu vermeiden, kann das sgcWebSockets-Paket so konfiguriert werden, dass es die installierte sgcIndy-Version verwendet und dennoch alle Komponenten nutzen kann. Befolgen Sie dazu die nachstehenden Anweisungen:

 

1. Öffnen Sie die Datei sgcVer.inc, die sich im Source-Ordner des sgcWebSockets-Pakets befindet.

2. Deaktivieren Sie die Compilerdirektive: SGC_CUSTOM_INDY. Diese Option teilt dem Compiler mit, dass die Dateien, die mit sgcId*.pas beginnen, vorhanden sind und beim Kompilieren des sgcWebSockets Enterprise Package verwendet werden müssen.

3. Aktivieren Sie den folgenden Compiler: SGC_INDY_LIB. Diese Option teilt dem Compiler mit, dass das sgcIndy-Paket installiert ist und beim Kompilieren des Pakets verwendet werden muss.

 

{$DEFINE SGC_INDY_LIB}

 

Mit der vorherigen Konfiguration verwendet das sgcWebSockets-Enterprise-Paket das installierte sgcIndy-Paket und alle Funktionen, die dieses Paket nutzen (wie http/2, IOCP, OpenSSL 3.0...), werden aktiviert.