TsgcSTUNClient 구성 요소.
TsgcSTUNClient는 STUN 프로토콜을 구현하는 클라이언트이며 STUN 서버에 바인딩 요청을 보낼 수 있습니다.
구성 요소는 UDP와 TCP를 전송 수단으로 사용할 수 있게 합니다. UDP를 전송 수단으로 사용할 때, 짧은 시간 후에도 응답이 도착하지 않으면 요청을 다시 보내는 재전송 메커니즘을 구현합니다.
일반적으로 STUN 서버는 UDP 포트 3478에서 실행되며 인증이 필요하지 않으므로, STUN 요청 바인딩을 보내려면 클라이언트가 연결할 위치를 알 수 있도록 서버 속성을 채우고 구성 요소가 서버로부터 응답을 받을 이벤트를 처리하십시오.
서버 구성
STUN 서버에 binding 요청을 보내려면 SendRequest 메서드를 호출하십시오.
이벤트 처리
서버가 성공 응답을 반환하면 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;