Delphi STUN 서버
Delphi에서 자체 STUN(RFC 8489) 서버를 실행하세요. 표준 XOR-MAPPED-ADDRESS 응답으로 바인딩 요청에 답해요 — 사설 네트워크, 온프레미스 배포, ICE 부트스트래핑에 유용해요.
Delphi에서 자체 STUN(RFC 8489) 서버를 실행하세요. 표준 XOR-MAPPED-ADDRESS 응답으로 바인딩 요청에 답해요 — 사설 네트워크, 온프레미스 배포, ICE 부트스트래핑에 유용해요.
타입이 지정된 RFC 8489 STUN 서버예요 — Binding / Indication 메시지를 처리하고 XOR-MAPPED-ADDRESS로 응답하며, 장기 인증을 위해 선택적으로 MESSAGE-INTEGRITY를 강제해요.
TsgcSTUNServer
Windows, macOS, Linux, iOS, Android
Professional / Enterprise
Port(기본값 3478)를 설정하고 Active := True 하면 끝이에요 — 이제 서버가 표준 RFC 8489 XOR-MAPPED-ADDRESS 응답으로 Binding 요청에 답해요.
uses
sgcP2P, sgcP2P_STUN_Classes;
// TFormSTUNServer는 FServer: TsgcSTUNServer와 핸들러를 보유
procedure TFormSTUNServer.StartServer;
begin
FServer := TsgcSTUNServer.Create(nil);
FServer.Port := 3478;
// 선택 사항: 장기 자격 증명
FServer.STUNOptions.Authentication.Enabled := True;
FServer.STUNOptions.Authentication.LongTermCredentials.Enabled := True;
FServer.STUNOptions.Authentication.LongTermCredentials.Realm :=
'example.com';
FServer.OnSTUNRequestAuthorization := OnSTUNRequestAuthorization;
FServer.Active := True;
end;
procedure TFormSTUNServer.OnSTUNRequestAuthorization(Sender: TObject;
const aRequest: TsgcSTUN_Message;
const aUsername, aRealm: string;
var Password: string);
begin
// 해당 사용자의 비밀번호를 반환, 빈 값이면 요청을 거부
Password := LookupPassword(aUsername);
end;
// includes: sgcP2P.hpp, sgcP2P_STUN_Classes.hpp
TsgcSTUNServer *Server = new TsgcSTUNServer(this);
Server->Port = 3478;
Server->STUNOptions->Authentication->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Enabled = true;
Server->STUNOptions->Authentication->LongTermCredentials->Realm = "example.com";
Server->OnSTUNRequestAuthorization = OnSTUNRequestAuthorization;
Server->Active = true;
자체 호스팅 STUN 서버 — 온프레미스 WebRTC 배포와 사설 클라우드 테스트에 이상적이에요.
들어오는 Binding 요청에 XOR-MAPPED-ADDRESS, MAPPED-ADDRESS(레거시), FINGERPRINT로 응답해요 — 표준 RFC 8489 응답 형식을 따라요.
STUNOptions.Authentication.Enabled를 켜면 MESSAGE-INTEGRITY가 필요해지고, 렐름은 LongTermCredentials.Realm에 설정해요. OnSTUNRequestAuthorization가 사용자명과 렐름을 전달하므로, 해당하는 비밀번호를 반환하면 돼요.
STUNOptions.BindingAttributes로 레거시 RFC 3489 MAPPED-ADDRESS와 OTHER-ADDRESS, RESPONSE-ORIGIN, SOURCE-ADDRESS를 켜고 끌 수 있고, AlternateServer는 지정한 서버로 300 Try Alternate를 응답해요.
IPVersion으로 어느 한쪽 또는 듀얼 스택에 바인딩해요. XOR-MAPPED-ADDRESS 응답은 들어오는 전송 계층의 주소 체계를 사용해요.
LongTermCredentials.StaleNonce는 논스가 유효한 기간을 설정해요. 기간이 지나면 서버가 새 논스와 함께 438 Stale Nonce를 응답하는데, RFC 8489 §9.2가 요구하는 동작이에요.
OnSTUNRequestSuccess와 OnSTUNRequestError는 요청과 서버가 보내려는 응답을 전달하며, var Accept를 해제하면 응답을 막을 수 있어요. LogFile은 원본 교환 내용을 디스크에 기록해요.
컴포넌트 레퍼런스로 바로 이동하고, 바로 실행할 수 있는 데모 프로젝트를 받아보고, 체험판을 다운로드하세요.
| 온라인 도움말 — TsgcSTUNServer 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요. | 열기 | |
| 데모 프로젝트 — Demos\35.P2P\02.STUN 바로 실행할 수 있는 예제 프로젝트예요. sgcWebSockets 패키지에 포함되어 있으니 아래에서 체험판을 다운로드해 보세요. | 열기 | |
| 기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 출처 참고 자료예요. | 열기 | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | 열기 |
Delphi 및 C++ Builder에서 자체 호스팅 STUN 서버를 운영하는 것에 대해 자주 묻는 질문이에요.
TsgcSTUNServer 컴포넌트를 추가하고, Port(기본값 3478)를 설정한 다음 Active := True로 설정하세요. 그러면 서버가 인바운드 Binding 요청에 표준 XOR-MAPPED-ADDRESS 응답으로 답해요. 선택적으로 Authentication을 활성화하고 OnSTUNRequestAuthorization를 처리하여 long-term 자격 증명으로 MESSAGE-INTEGRITY를 요구할 수 있어요.TsgcSTUNServer는 직접 Delphi 또는 C++ Builder 애플리케이션에 내장하는 자체 호스팅 STUN 서버이므로, 별도의 coturn 인스턴스를 배포하고 운영할 필요가 없어요. 사설 네트워크, 온프레미스 WebRTC 배포, 직접 제어하는 ICE 부트스트래핑에 이상적이에요.