Delphi UDP 客户端

在 Delphi/C++Builder 中发送和接收 UDP 数据报。支持 IPv4 与 IPv6、可选的 DTLS 会话和 SOCKS5 路径,同时也是整个 STUN、TURN、ICE 和 WebRTC 栈所依赖的传输层。

TsgcUDPClient

高性能 UDP 数据报客户端 — 作为 STUN、TURN、ICE、RTCPeerConnection 以及您编写的任何自定义 UDP 协议的底层传输基础。

组件类

TsgcUDPClient

协议

UDP (RFC 768)

支持平台

Windows, macOS, Linux, iOS, Android

版本

Core / Standard / Professional / Enterprise

放置组件,发送数据包

设置 Host / Port,Active := True,然后调用 WriteData 发送您需要发送的文本或字节。入站数据报通过 OnUDPRead 到达。

uses
  sgcP2P, sgcUDP_Classes, sgcSocket_Classes;

// TFormUDP 持有 FClient: TsgcUDPClient 和 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
  // 在读取线程上触发,操作控件前请先编组
  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)
{
  // 在读取线程上触发,操作控件前请先编组
}

内部功能

精简、可预测的 UDP 套接字层,作为 STUN / TURN / ICE / WebRTC 及任何自定义数据报协议的传输基础。

单播收发

WriteData(text)WriteData(bytes) 将数据报排入队列,发往 Host / Port,而接受地址参数的重载可将数据报发送到任意其他端点。OnUDPRead 传递每个入站数据包,并附带它到达时所用的套接字。

DTLS

设置 DTLS := True 并填写 DTLSOptions,即可在 DTLS 会话中传输数据报。OnDTLSVerifyPeer 将对等方证书交给您,由您决定是否接受。

SOCKS5 代理

Proxy 通过 SOCKS5 UDP ASSOCIATE 转发数据报。HTTP 代理会以 EsgcUDPProxyNotSupported 被拒绝,因为只有 SOCKS5 定义了 UDP 路径。

您读取数据的套接字

每次 OnUDPRead 都携带一个 TsgcUDPSocketIPPort 标识发送方,LocalIPLocalPort 标识本地基地址,ICE 随后会将其作为主机候选发布。

IPv4 / IPv6

IPVersion 会直接传递给底层套接字,因此当您需要 IPv6 路径时,将其设置为 Id_IPv6 即可。

P2P 栈的底层

每个更高层的 P2P 组件(TsgcSTUNClientTsgcTURNClientTsgcICEClientTsgcRTCPeerConnection)在内部都使用此客户端作为 UDP 传输。

规范与参考资料

该组件实现的协议权威来源。

文档与示例

直达组件参考文档、获取即用示例项目并下载试用版。

在线帮助 — TsgcUDPClient 该组件的完整属性、方法和事件参考。
示例项目 — Demos\35.P2P\01.UDP_Server_Client 即用示例项目,包含在 sgcWebSockets 包中 — 请从下方下载试用版。
技术文档(PDF) 功能介绍、快速入门、Delphi 与 C++ Builder 代码示例及原始参考资料 — 仅限此组件。
用户手册(PDF) 涵盖库中每个组件的综合手册。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好在 Delphi 中使用 UDP 发送数据了吗?

下载免费试用版,为您的 Delphi 应用程序添加 UDP 数据报支持。