Cliente UDP para Delphi

Envie e receba datagramas UDP a partir do Delphi/C++Builder. IPv4 e IPv6, uma sessão DTLS opcional e um caminho SOCKS5, e o transporte sobre o qual toda a pilha STUN, TURN, ICE e WebRTC é construída.

TsgcUDPClient

Cliente UDP de alto desempenho — a base sob STUN, TURN, ICE, RTCPeerConnection e qualquer protocolo UDP personalizado que você escrever.

Classe do componente

TsgcUDPClient

Protocolo

UDP (RFC 768)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Core / Standard / Professional / Enterprise

Adicione o componente, envie pacotes

Defina Host / Port, Active := True, depois chame WriteData com o texto ou os bytes que deseja enviar. Os datagramas recebidos chegam em OnUDPRead.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDP mantém FClient: TsgcUDPClient e FIncoming: TStringList

procedure TFormUDP.CreateClient;
begin
  FClient := TsgcUDPClient.Create(nil);
  FClient.Host := '127.0.0.1';
  FClient.Port := 4000;

  FClient.OnUDPRead := OnUDPRead;

  FClient.Active := True;
  FClient.WriteData('hello over UDP');
end;

procedure TFormUDP.OnUDPRead(Sender: TObject; Socket: TsgcUDPSocket;
  Bytes: TsgcBytes);
var
  oStream: TStringStream;
begin
  // disparado na thread de leitura, faça o marshal antes de tocar em um controle
  oStream := TStringStream.Create('');
  try
    oStream.Write(Bytes[0], Length(Bytes));
    FIncoming.Add(oStream.DataString);
  finally
    oStream.Free;
  end;
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPClient *Client = new TsgcUDPClient(this);
Client->Host = "127.0.0.1";
Client->Port = 4000;
Client->OnUDPRead = OnUDPRead;

Client->Active = true;
Client->WriteData("hello over UDP");

void __fastcall TFormUDP::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // disparado na thread de leitura, faça o marshal antes de tocar em um controle
}

O que tem por dentro

Uma camada de socket UDP simples e previsível usada como transporte para STUN / TURN / ICE / WebRTC e qualquer protocolo de datagrama personalizado.

Envio/recebimento unicast

WriteData(text) e WriteData(bytes) enfileiram um datagrama para Host / Port, e as sobrecargas que recebem um endereço enviam para qualquer outro destino. OnUDPRead entrega cada pacote de entrada junto com o socket em que ele chegou.

DTLS

Defina DTLS := True e preencha DTLSOptions para transportar os datagramas dentro de uma sessão DTLS. OnDTLSVerifyPeer entrega o certificado do peer para que você decida se o aceita.

Proxy SOCKS5

Proxy leva os datagramas através de um UDP ASSOCIATE SOCKS5. Um proxy HTTP é recusado com EsgcUDPProxyNotSupported, porque apenas o SOCKS5 define um caminho UDP.

O socket de onde você lê

Cada OnUDPRead traz um TsgcUDPSocket: IP e Port identificam o remetente, LocalIP e LocalPort identificam a base local que o ICE depois publica como candidato host.

IPv4 / IPv6

IPVersion é repassado diretamente ao socket subjacente, então defina-o como Id_IPv6 quando precisar do caminho IPv6.

Usado na pilha P2P

Todo componente P2P de nível superior (TsgcSTUNClient, TsgcTURNClient, TsgcICEClient, TsgcRTCPeerConnection) usa este cliente internamente como seu transporte UDP.

Especificações & referências

Fontes oficiais do protocolo que este componente implementa.

Documentação & Demos

Acesse a referência do componente, pegue o projeto demo pronto para executar e baixe a versão de avaliação.

Ajuda online — TsgcUDPClient Referência completa de propriedades, métodos e eventos deste componente.
Projeto demo — Demos\35.P2P\01.UDP_Server_Client Exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente deste componente.
Manual do usuário (PDF) Manual completo cobrindo todos os componentes da biblioteca.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para enviar UDP a partir do Delphi?

Baixe a versão de avaliação gratuita e adicione suporte a datagramas UDP às suas aplicações Delphi.