sgcIndy beş dakikada

sgcIndy, Indy'nin bakımı yapılan bir derlemesidir, yeni adlarla bir fork değildir. Unit adları, sınıf adları ve bileşen paleti sayfaları zaten kullandıklarınızdır; bu nedenle hızlı başlangıç "şu kodu yazın" değil, "kurun, yeniden derleyin ve ardından tek bir yeni özellik ayarlayın" şeklindedir.

Indy ile aynı unit ve sınıf adları
OpenSSL 1.0, 1.1 ve 3.0, TLS 1.3 ile
Delphi, C++Builder, FreePascal ve Lazarus

Diğer her şeyi şekillendiren gerçek

sgcId öneki yoktur. Tek bir unit değil, tek bir sınıf değil. Mevcut kodunuz değişmeden derlenir.

Unit adları

Düz Indy adları. IdTCPClient, IdHTTP, IdSSLOpenSSL ve yaklaşık dört yüz tane daha. Kitaplıktaki hiçbir unit sgc önekiyle adlandırılmamıştır.

Sınıf adları

Sınıf adları da düz Indy adlarıdır: TIdTCPClient, TIdHTTP, TIdSSLIOHandlerSocketOpenSSL, TIdSSHClient, TIdSFTPClient.

Palet sayfaları

Aynı beşi: Indy Clients, Indy Servers, Indy Intercepts, Indy I/O Handlers ve Indy Misc. Bunların arasında, zaten baktığınız yerlerde yaklaşık 166 bileşen.

Peki ne değişiyor

Yükleyici IDE'nin hangi paketleri yüklediğini değiştirir ve arama yolunu yeniden yazar. Projeniz değişmez. Görünür fark yeni bir özellik olan SSLOptions.APIVersion ve altındaki düzeltmelerdir.

Gereksinimler ve sürümler

sgcIndy'nin özellik kademeleri yoktur. Lisans kademeleri kutuda neyin bulunduğunu değiştirir, kodun neler yapabileceğini değil.

Konu Değer
IDE Delphi 7'den RAD Studio 13'e ve C++Builder 2007'den 13'e kadar. Her biri için paket grupları gelir.
Uses yan tümcesi Değişmez. Projenizin zaten yazdığı her şey çalışmaya devam eder, çünkü unit adları stok Indy ile aynıdır.
Indy temel sürümü Kitaplık kendini Indy 10.6.3.12 olarak bildirir. sgc değişiklikleri unit'lerin yeniden adlandırılmasıyla değil, özgün unit'lerin içinde yorumlar ve koşullu tanımlarla işaretlenmiştir.
Sürümler Özellik kademesi yok. Sürüm bayrağı derleme sırasında enjekte edilir ve tam olarak iki tüketicisi vardır: Hakkında kutusu ve IDE açılış ekranı. Kitaplıktaki hiçbir şey onunla kısıtlanmaz. Kademelerin gerçekte değiştirdiği paketlemedir: Community ve Basic derlemeleri .pas ve .inc dosyaları hariç tutulmuş derlenmiş ikili dosyalar getirir, kaynak derlemesi ise bunları içerir.
FreePascal ve Lazarus Desteklenir. FreePascal paket iskeletleri ve derleme dosyalarıyla birlikte bir Lazarus paketi gelir ve derleyici merdiveni FPC 2.2.2'den 3.3.1'e kadar uzanır. Bir uyarı: Delphi modu Lazarus için bilerek devre dışı bırakılmıştır; bunu varsayan bir unit'in ayarlanması gerekir.
Platformlar Windows, Linux, macOS, FreeBSD, iOS ve Android'in hepsinin kendi koşullu blokları vardır. iOS'ta OpenSSL statik olarak bağlanmalıdır.

Başlamadan önce bilinmesi gereken en yararlı şey: unit adları RAD Studio ile gelen Indy ile çakıştığından, değişimi yükleyici sizin için yönetir. Yerleşik Indy tasarım paketlerinin kaydını kaldırır, kendisininkileri kaydeder ve IDE arama yollarını yeniden yazar.

Kurun ve değişimi doğrulayın

İşi yükleyici yapar. Önemli olan, sonrasında IDE'nin gerçekten sgcIndy'yi yüklediğini doğrulamaktır.

1. Yükleyiciyi çalıştırın

İndirilen kurulum dosyasını çalıştırın ve istediğiniz RAD Studio sürümlerini ve platformlarını işaretleyin. Kitaplığı kopyalar ve Community ile Basic paketleri için kaynak dosyaları dahil etmez.

2. Paketleri değiştirmesine izin verin

Yükleyici IDE'nin yerleşik Indy tasarım paketlerinin kaydını kaldırır ve yerlerine kendisininkileri kaydeder. Aynı unit adlarının sgcIndy'ye çözülmesini sağlayan budur.

3. Arama yolunu düzeltmesine izin verin

Her platform için sgcIndy klasörlerini IDE arama yollarının başına koyar ve önceki bir kurulumdan kalan eskimiş girdileri kaldırır.

4. Açılış ekranında doğrulayın

IDE'yi yeniden başlatın. Açılış ekranı sgcIndy'yi adıyla anar ve Indy Hakkında kutusu da bunu söyler. Değişimin gerçekleştiğini doğrulayan kontrol budur.

5. Projenizi yeniden derleyin

Mevcut Indy projenizi açın ve yeniden derleyin. Uses yan tümcesine dokunmayın. Stok Indy'ye karşı derleniyorsa buna karşı da derlenir.

Yeniden derleyin, ardından TLS 1.3'e ulaşın

İlk sekme, mevcut projenizin zaten nasıl göründüğüdür. İkincisi eklemeye değer tek yeni satırdır. Üçüncüsü stok Indy'de değil sgcIndy'de olduğunuzu kanıtlar.

FHttpClient.pas
// This is a shipped sgcIndy demo's uses clause.
// Read it twice: there is not one sgc prefix in it.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
  IdSSLOpenSSL, IdSSLOpenSSLHeaders, StdCtrls;

Mevcut projeniz zaten böyle görünüyor ve mesele de bu. sgcIdTCPClient yoktur ve TsgcIdSSLIOHandlerSocketOpenSSL yoktur, çünkü kitaplıktaki hiçbir unit ve hiçbir sınıf sgc öneki taşımaz. Kurun, yeniden derleyin, bitti.

FHttpClient.pas
procedure TFRMHttpClient.btnGoToClick(Sender: TObject);
var
  oStream: TStringStream;
begin
  // Two separate settings. APIVersion picks which generation of the
  // OpenSSL API to call, Method picks the TLS version. TLS 1.3 needs
  // the 3.0 API, so both lines change together.
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.APIVersion := sslvAPI_3_0;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_3;

  oStream := TStringStream.Create('');
  try
    IdHTTP1.Get(txtURL.Text, oStream);
  finally
    FreeAndNil(oStream);
  end;
end;

TIdSSLAPIVersion, sslvAPIDefault, sslvAPI_1_0, sslvAPI_1_1 ve sslvAPI_3_0 üyelerine sahiptir. Ne tür ne de özellik stok Indy'de vardır; bu da bu kod parçasını hangi kitaplığa karşı derlediğinizin derleme zamanı kanıtı yapar.

fTcpClient.pas
procedure TfrmTCPClient.btnConnectClick(Sender: TObject);
begin
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.APIVersion := sslvAPI_3_0;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_3;

  IdTCPClient1.Host := txtHost.Text;
  IdTCPClient1.Port := StrToInt(txtPort.Text);
  IdSSLIOHandlerSocketOpenSSL1.PassThrough := False;

  IdTCPClient1.Connect;
end;

procedure TfrmTCPClient.btnDisconnectClick(Sender: TObject);
begin
  IdTCPClient1.Disconnect;
end;

Aynı bileşenler, aynı özellikler, aynı palet sayfası. PassThrough := False, tıpkı stok Indy'de olduğu gibi düz soketi bir TLS soketine dönüştüren şeydir. Okumak IdTCPClient1.IOHandler.ReadLn, yazmak IOHandler.Write ile yapılır, değişmeden.

İlk iki sekme, açılır kutu sabit bir değerle değiştirilmiş olarak paketle gelen Demos\HttpClient\FHttpClient.pas demosundan alınmıştır. SSH ve SFTP istemcileri, bir FTP istemcisi, posta istemcileri, bir TCP sunucusu ve bir UDP çifti dahil toplam on sekiz demo gelir.

sgcIndy çalıştırdığınızı kanıtlayın

Unit adları aynı olduğundan bunu kendi kaynağınızdan anlayamazsınız. İşte kesin olan üç kontrol.

Açılış ekranı

Kurulumdan sonra IDE'yi yeniden başlatın. Açılış ekranı sgcIndy'yi adıyla anar. Paket değişiminin gerçekleştiğini doğrulayan kontrol budur ve en hızlısıdır.

Hakkında kutusu

Indy Hakkında iletişim kutusu stok metin yerine eSeGeCe'yi bildirir ve ücretsiz pakette Community Edition der.

Stok Indy'de derlenmeyecek bir satır

SSLOptions.APIVersion := sslvAPI_3_0;. TIdSSLAPIVersion türü stok Indy'de yoktur; bu satır derleniyorsa sgcIndy'desiniz.

Kendi projeniz

Uses yan tümcesine dokunmadan yeniden derleyin. Daha önce olduğu gibi derlenmelidir, çünkü unit ve sınıf adları aynıdır.

İlk seferde genellikle ne ters gider

Geçişlerin neredeyse tamamı altı sorundan kaynaklanır.

sgcId unit'lerini aradınız

Yok. Kitaplıkta sgc öneki taşıyan sıfır unit ve sıfır sınıf vardır. Uses yan tümcenizi sgcIdTCPClient olarak yeniden yazarsanız proje derlenmez, çünkü böyle bir unit yoktur.

IDE hâlâ stok Indy'yi yüklüyor

Paket değişimini yükleyici yönetir; bu nedenle bu genellikle kurulumun tamamlanmadığı ya da elle girilmiş bir arama yolu girdisinin öne geçtiği anlamına gelir. Değişim gerçekleştiğinde sgcIndy'yi adıyla anan açılış ekranını kontrol edin.

TLS 1.3 anlaşılmıyor

İki özelliği de ayarlayın. SSLOptions.APIVersion hangi OpenSSL API nesli kullanılacağını, SSLOptions.Method ise protokol sürümünü seçer. TLS 1.3, 3.0 API'sini gerektirir; bu nedenle iki satır birlikte değişmelidir.

OpenSSL DLL'leri eksik

Her demo klasörü ihtiyaç duyduğu kümeyi çalıştırılabilir dosyanın yanında getirir. 3.0 API'si için bunlar libcrypto-3.dll ve libssl-3.dll dosyalarıdır. Eski API'ler için adlar farklıdır ve yanlış çifti kopyalamak, başlamadan başarısız olan bir el sıkışmanın sık görülen nedenidir.

Bir unit Lazarus altında başarısız oluyor

Delphi modu, derleyici tanımlarında orada başarısız olduğunu söyleyen bir yorumla, Lazarus derlemeleri için bilerek kapatılmıştır. Delphi modu anlambilimine dayanan kodun ayarlanması gerekir.

Kaynak dosyalar pakette yok

Community ve Basic yükleyicileri derlenmiş ikili dosyalar getirir ve .pas ile .inc dosyalarını hariç tutar. Kitaplığın içine adım adım girmeniz gerekiyorsa kaynak içeren pakete ihtiyacınız vardır.

sgcIndy, Indy'nin üzerine neler ekliyor

Yeniden derleme tamamlandıktan sonra bilmeye değer dört şey.

Modern OpenSSL ve TLS 1.3

Stok Indy 10.6.2, OpenSSL 1.1 ve 3.0 API değişikliklerinden öncedir. SSLOptions.APIVersion nesli seçer ve sslvTLSv1_3 3.0 API'sinde erişilebilir hâle gelir.

sgcIndy özellikleri

SSH ve SFTP

TIdSSHClient ve TIdSFTPClient stok Indy'de hiç yoktur. İkisi için de demolar gelir.

SSH istemcisi ve SFTP istemcisi

Yüksek performanslı sunucular

IOCP ve epoll IO işleyicileri, Windows ve Linux'ta bağlantı başına iş parçacığı modelinin yerini alır; gerçek yük altında bir sunucunun biçimini değiştiren budur.

Nasıl karşılaştırılır

Posta için modern kimlik doğrulama

XOAUTH2 desteği, bir SMTP veya IMAP istemcisinin temel kimlik doğrulamayı emekli etmiş sağlayıcılara karşı kimlik doğrulayabilmesi anlamına gelir.

sgcIndy'de XOAUTH2

Başvuru, demolar ve belgeler

İndirmenin içinde bir yankı istemcisinden SSH ve SFTP'ye kadar on sekiz demo projesi gelir.

sgcIndy özellikleri Bu derlemenin Indy 10.6.3'ün üzerinde neleri düzelttiği ve eklediği.
Nasıl karşılaştırılır sgcIndy ile stok Indy, özellik özellik.
İndirme Community paketi ücretsiz kullanılabilir.
Satın al Tam kaynak içeren paketler.
Ürüne genel bakış sgcIndy'nin ne olduğu ve kimin için olduğu.
Tüm ürünler Her eSeGeCe kitaplığının fiyatlandırması tek bir tabloda.

İlgili okumalar: Indy ile OpenSSL 3.0, IOCP sunucusu, SSH istemcisi ve en son sürüm notları. Her ürünün kendi hızlı başlangıcı vardır ve başlarken sayfasında listelenir.

sgcIndy hızlı başlangıç soruları

Hayır ve bu, sgcIndy hakkındaki en önemli tek şeydir. Her unit özgün Indy adını korur: IdTCPClient, IdHTTP, IdSSLOpenSSL ve diğerleri; her sınıf da özgün adını korur: TIdTCPClient, TIdHTTP, TIdSSLIOHandlerSocketOpenSSL. Kitaplıkta sgc öneki taşıyan hiçbir unit ve hiçbir sınıf yoktur. Kurun, yeniden derleyin ve projeniz sgcIndy üzerindedir.
Yükleyici bunları değiştirir. Yerleşik Indy tasarım paketlerinin IDE'deki kaydını kaldırır, yerlerine sgcIndy'ninkileri kaydeder ve sgcIndy klasörlerini arama yollarının başına koyar. Unit adları aynı olduğundan, değişmesi gereken kodunuz değil budur.
Üç kontrol. IDE açılış ekranı başlangıçta sgcIndy'yi adıyla anar. Indy Hakkında kutusu da bunu söyler. Ayrıca bir derleme zamanı kanıtı vardır: SSLOptions.APIVersion yalnızca bu derlemede bulunur; bu nedenle ona sslvAPI_3_0 atayan bir satır burada derlenir ve stok Indy'de başarısız olur.
Birlikte ayarlanan iki özellik. SSLOptions.APIVersion := sslvAPI_3_0 OpenSSL 3.0 API nesli, SSLOptions.Method := sslvTLSv1_3 ise protokolü seçer. TIdSSLAPIVersion türü sslvAPIDefault, sslvAPI_1_0, sslvAPI_1_1 ve sslvAPI_3_0 üyelerine sahiptir ve TIdSSLVersion türüne sslvTLSv1_3 eklenmiştir. Ardından demoların yaptığı gibi libcrypto-3.dll ve libssl-3.dll dosyalarını çalıştırılabilir dosyanızın yanında dağıtın.
Kitaplık kendini Indy 10.6.3.12 olarak bildirir. sgc değişiklikleri özgün dosyaların içinde yapılır, yorumlarla işaretlenir ve koşullu tanımlarla korunur; unit adlarının aynı kalabilmesinin tam nedeni budur.
Hiçbirini, çünkü hiçbir özellik sürümle kısıtlanmaz. Sürüm bayrağı derleme sırasında enjekte edilir ve tüm kitaplıkta ikisi de kozmetik olan yalnızca iki tüketicisi vardır: Hakkında kutusu başlığı ve IDE açılış ekranı metni. Kademelerin gerçekte değiştirdiği paketlemedir; çünkü Community ve Basic yükleyicileri derlenmiş ikili dosyalar getirir ve .pas ile .inc dosyalarını hariç tutar, kaynak içeren paket ise bunları içerir.
Evet. FreePascal paket iskeletleri ve derleme dosyalarıyla birlikte bir Lazarus paketi gelir ve derleyici merdiveni FPC 2.2.2'den 3.3.1'e kadar uzanır. Başlamadan önce bilmeye değer bir uyarı var: Delphi modu, derleyici tanımlarında orada başarısız olduğunu söyleyen bir yorumla Lazarus için bilerek devre dışı bırakılmıştır; bu nedenle Delphi modu anlambilimine bağlı bir unit'in ayarlanması gerekir.
Windows, Linux, macOS, FreeBSD, iOS ve Android'in hepsinin derleyici tanımlarında kendi koşullu blokları vardır. Unix hedefleri OpenSSL'i ve birlikte gelen zlib unit'ini kullanır. Gerçek bir kısıtı olan iOS'tur: OpenSSL orada çalışma zamanında yüklenmek yerine statik olarak bağlanmalıdır.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Stok Indy'den ayrılmaya hazır mısınız?

Community paketi ücretsizdir. Kurun, yeniden derleyin ve açılış ekranını kontrol edin.