Delphi UDP 服务器
监听端口上的 UDP 数据报并将每个数据报分发给您的应用程序。这是驱动 TsgcSTUNServer 和 TsgcTURNServer 的同一引擎。
监听端口上的 UDP 数据报并将每个数据报分发给您的应用程序。这是驱动 TsgcSTUNServer 和 TsgcTURNServer 的同一引擎。
高性能 UDP 监听器 — 绑定到端口,接收来自任意对等方的数据报,向特定端点回复,全部通过一个绑定套接字完成。
TsgcUDPServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
设置 Port,Active := True,然后在 OnUDPRead 中处理入站数据报,并通过 Socket.WriteData 回复 — 一个套接字,任意数量的远程对等方。
uses
sgcP2P, sgcUDP_Classes, sgcSocket_Classes;
// TFormUDPServer 持有 FServer: TsgcUDPServer 和事件处理程序
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
// 回显给发来该数据报的对等方
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)
{
// 回显给发来该数据报的对等方
Socket->WriteData(TBytes(Bytes));
}
该 UDP 监听器将每个数据报连同它到达时所用的 TsgcUDPSocket 一起交给您的处理程序,该套接字同时也是回复路径。
一个绑定套接字即可处理来自任意数量远程端点的数据报。每次触发 OnUDPRead 都会携带一个 TsgcUDPSocket,其 IP 和 Port 标识发送方。
Socket.WriteData 通过同一套接字将数据报发回源对等方,服务器同时还提供 WriteData(ip, port, ...),可发送到任意其他端点。
当监听器不再响应时,WatchDog 会将其重新启动,而 OnBeforeWatchDog 让您有机会否决这次重启。OnStartup 和 OnShutdown 包围每一次绑定。
通过 IPVersion 设置地址族;当服务器必须监听多个地址时,可使用 AddBinding、RemoveBinding 和 GetBinding 在 Bindings 中为每个地址添加一条记录。
STUN 和 TURN 服务器(完整的 RFC 8489 / 8656 实现)构建于此组件之上 — 您也可以用它实现任何自定义 UDP 协议。
设置 DTLS := True 并填写 DTLSOptions,即可在 DTLS 会话中传输数据报,由 OnDTLSVerifyPeer 决定您接受哪些对等方证书。