TsgcSTUNClient 组件。
TsgcSTUNClient 是实现 STUN 协议的客户端,允许您向 STUN 服务器发送绑定请求。
该组件允许使用 UDP 和 TCP 作为传输层。使用 UDP 作为传输层时,实现了重传机制,在短时间内未收到响应时重新发送请求。
通常 STUN 服务器运行在 UDP 3478 端口上且不需要认证,因此要发送 STUN 绑定请求,请填写服务器属性以便客户端知道连接位置,并处理组件从服务器接收响应时的相关事件。
配置服务器
调用方法 SendRequest,向 STUN 服务器发送绑定请求。
处理事件
如果服务器返回成功响应,将调用事件 OnSTUNResponseSuccess,您可以通过读取 aBinding 对象访问绑定信息。
oSTUN := TsgcSTUNClient.Create(nil);
oSTUN.Host := 'stun.sgcwebsockets.com';
oSTUN.Port := 3478;
oSTUN.SendRequest;
procedure OnSTUNResponseSuccess(Sender: TObject; const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message; const aBinding: TsgcSTUN_ResponseBinding);
begin
DoLog('Remote IP: ' + aBinding.RemoteIP + '. Remote Port: ' + IntToStr(aBinding.RemotePort));
end;
procedure OnSTUNResponseError(Sender: TObject; const aSocket: TsgcSocketConnection;
const aMessage: TsgcSTUN_Message; const aError: TsgcSTUN_ResponseError);
begin
DoLog('Error: ' + IntToStr(aError.Code) + ' ' + aError.Reason);
end;