Servidor UDP para Delphi

Escute datagramas UDP em uma porta e despache cada um para sua aplicação. O mesmo motor que alimenta TsgcSTUNServer e TsgcTURNServer.

TsgcUDPServer

Listener UDP de alto desempenho — vincula a uma porta, recebe datagramas de qualquer peer e responde a endpoints específicos, tudo através de um único socket vinculado.

Classe do componente

TsgcUDPServer

Protocolo

UDP (RFC 768)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Professional / Enterprise

Adicione, escute, responda

Defina Port, Active := True, depois trate os datagramas de entrada em OnUDPRead e responda via Socket.WriteData — um socket, qualquer número de peers remotos.

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDPServer mantém FServer: TsgcUDPServer e o handler

procedure TFormUDPServer.StartServer;
begin
  FServer := TsgcUDPServer.Create(nil);
  FServer.Port := 4000;

  FServer.OnUDPRead := OnUDPRead;

  FServer.Active := True;
end;

procedure TFormUDPServer.OnUDPRead(Sender: TObject;
  Socket: TsgcUDPSocket; Bytes: TsgcBytes);
begin
  // devolve o eco ao peer de onde veio o datagrama
  Socket.WriteData(TBytes(Bytes));
end;
// includes: sgcP2P.hpp, sgcUDP_Classes.hpp, sgcSocket_Classes.hpp
TsgcUDPServer *Server = new TsgcUDPServer(this);
Server->Port = 4000;
Server->OnUDPRead = OnUDPRead;
Server->Active = true;

void __fastcall TFormUDPServer::OnUDPRead(TObject *Sender,
  TsgcUDPSocket *Socket, TsgcBytes Bytes)
{
  // devolve o eco ao peer de onde veio o datagrama
  Socket->WriteData(TBytes(Bytes));
}

O que tem por dentro

Um listener UDP que entrega cada datagrama ao seu handler junto com o TsgcUDPSocket em que ele chegou, que também é o caminho de resposta.

Uma porta, muitos peers

Um único socket vinculado trata datagramas de qualquer número de endpoints remotos. Cada OnUDPRead é disparado com um TsgcUDPSocket cujos IP e Port identificam o remetente.

Caminho de resposta

Socket.WriteData envia um datagrama de volta ao peer de origem pelo mesmo socket, e o servidor também oferece WriteData(ip, port, ...) para qualquer outro endpoint.

WatchDog

WatchDog reinicia o listener quando ele deixa de responder, e OnBeforeWatchDog lhe dá a chance de vetar o reinício. OnStartup e OnShutdown delimitam cada bind.

IPv4 / IPv6 e vários bindings

Defina IPVersion para a família, ou adicione uma entrada por endereço em Bindings com AddBinding, RemoveBinding e GetBinding quando o servidor precisar escutar em vários.

Usado por TsgcSTUNServer / TsgcTURNServer

Os servidores STUN e TURN (implementações completas RFC 8489 / 8656) são construídos sobre este componente — você pode fazer o mesmo para qualquer protocolo UDP personalizado.

DTLS

Defina DTLS := True e preencha DTLSOptions para rodar os datagramas dentro de uma sessão DTLS, com OnDTLSVerifyPeer decidindo quais certificados de peer você aceita.

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 — TsgcUDPServer 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 Executar um Servidor UDP?

Baixe o trial gratuito e escute datagramas UDP a partir do Delphi.