UDP 서버

포트에서 UDP 데이터그램을 수신하고 각각을 애플리케이션으로 전달해요. TsgcSTUNServer와 TsgcTURNServer를 구동하는 것과 동일한 엔진이에요.

TsgcUDPServer

고성능 UDP 리스너 — 포트에 바인딩하고, 모든 피어로부터 데이터그램을 받고, 특정 엔드포인트에 응답하고, 워커 스레드로 코어 전반에 걸쳐 확장돼요.

컴포넌트 클래스

TsgcUDPServer

프로토콜

UDP (RFC 768)

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Professional / Enterprise

컴포넌트를 놓고, 수신하고, 응답하세요

Port를 설정하고 Active := True 한 뒤, OnMessage에서 수신 데이터그램을 처리하고 Connection.WriteData로 응답하세요 — 소켓 하나로 임의 개수의 원격 피어를 처리해요.

uses
  sgcP2P;

var
  Server: TsgcUDPServer;
begin
  Server := TsgcUDPServer.Create(nil);
  Server.Port := 4000;

  Server.OnMessage := procedure(Connection: TsgcUDPConnection;
    const aText: string)
  begin
    // echo back to the originating peer
    Connection.WriteData('echo: ' + aText);
  end;

  Server.Active := True;
end;
// uses: sgcP2P
TsgcUDPServer *Server = new TsgcUDPServer(this);
Server->Port = 4000;
Server->Active = true;

내부 구성

멀티스레드 UDP 리스너로, 각 데이터그램을 워커 풀로 전달하고 응답 경로용 TsgcUDPConnection을 제공해요.

단일 포트, 다중 피어

바인딩된 소켓 하나가 임의 개수의 원격 엔드포인트로부터의 데이터그램을 처리해요. 각 OnMessage는 발신 PeerIP / PeerPort를 식별하는 TsgcUDPConnection과 함께 발생해요.

응답 경로

Connection.WriteData는 동일한 소켓을 사용해 발신 피어에게 데이터그램을 돌려보내요 — 추가 발신 바인딩이 필요 없어요.

스레드 방식 디스패치

워커 풀이 수신 패킷을 처리해요 — 핸들러가 무거운 작업을 한다면 WorkerCount로 구성하세요. 수신 스레드는 절대 차단되지 않아요.

IPv4 / IPv6 / 듀얼 스택

IPVersion으로 IPv4 전용, IPv6 전용 또는 듀얼 스택 바인딩을 지원해요. 멀티캐스트 그룹 참여는 JoinMulticastGroup으로 제공돼요.

TsgcSTUNServer / TsgcTURNServer의 기반

STUN 및 TURN 서버(완전한 RFC 8489 / 8656 구현)는 이 컴포넌트 위에 구축돼요 — 모든 커스텀 UDP 프로토콜도 동일하게 구축할 수 있어요.

No-fragment 힌트

발신 쓰기에서 DontFragment := True로 설정하세요 — 커스텀 프로토콜의 path-MTU 탐지에 유용해요.

명세 및 참고 자료

이 컴포넌트가 구현하는 프로토콜의 공인 출처예요.

문서 및 데모

컴포넌트 레퍼런스로 바로 이동하고, 바로 실행할 수 있는 데모 프로젝트를 받아보고, 체험판을 다운로드하세요.

온라인 도움말 — TsgcUDPServer 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요.
데모 프로젝트 — Demos\35.P2P\01.UDP_Server_Client 바로 실행할 수 있는 예제 프로젝트예요. sgcWebSockets 패키지에 포함되어 있으니 아래에서 체험판을 다운로드해 보세요.
기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 출처 참고 자료예요.
사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요.

UDP 서버를 실행할 준비가 되셨나요?

무료 체험판을 다운로드하고 Delphi에서 UDP 데이터그램을 수신해 보세요.