Delphi UDP 客户端
在 Delphi/C++Builder 中发送和接收 UDP 数据报。支持 IPv4 与 IPv6、可选的 DTLS 会话和 SOCKS5 路径,同时也是整个 STUN、TURN、ICE 和 WebRTC 栈所依赖的传输层。
在 Delphi/C++Builder 中发送和接收 UDP 数据报。支持 IPv4 与 IPv6、可选的 DTLS 会话和 SOCKS5 路径,同时也是整个 STUN、TURN、ICE 和 WebRTC 栈所依赖的传输层。
高性能 UDP 数据报客户端 — 作为 STUN、TURN、ICE、RTCPeerConnection 以及您编写的任何自定义 UDP 协议的底层传输基础。
TsgcUDPClient
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 := True 并填写 DTLSOptions,即可在 DTLS 会话中传输数据报。OnDTLSVerifyPeer 将对等方证书交给您,由您决定是否接受。
Proxy 通过 SOCKS5 UDP ASSOCIATE 转发数据报。HTTP 代理会以 EsgcUDPProxyNotSupported 被拒绝,因为只有 SOCKS5 定义了 UDP 路径。
每次 OnUDPRead 都携带一个 TsgcUDPSocket:IP 和 Port 标识发送方,LocalIP 和 LocalPort 标识本地基地址,ICE 随后会将其作为主机候选发布。
IPVersion 会直接传递给底层套接字,因此当您需要 IPv6 路径时,将其设置为 Id_IPv6 即可。
每个更高层的 P2P 组件(TsgcSTUNClient、TsgcTURNClient、TsgcICEClient、TsgcRTCPeerConnection)在内部都使用此客户端作为 UDP 传输。