더북(TheBook)

3.4 UDP 소켓

 

UDP 소켓은 만든 즉시 데이터를 보낼 수 있다. 바인딩하지 않은 상태라면 네트워크 모듈이 동적 포트 범위에 남아 있는 포트를 자동으로 찾아 바인딩해 준다. 데이터를 보내려면 sendto() 함수를 사용한다.

int sendto(SOCKET sock, const char* buf, int len, int flags,
    const sockaddr* to, int tolen);

sock은 데이터그램을 보낼 소켓이다. 바인딩되지 않았다면 라이브러리가 자동으로 포트를 골라 바인딩해 준다. 바인딩한 주소와 포트는 외부로 나가는 패킷 헤더의 발신자 주소가 된다.

buf는 보낼 데이터의 시작 주소를 가리키는 포인터이다. char*형의 데이터만 보낼 수 있는 건 아니다. char*로 캐스팅할 수 있다면 어떤 것이든 데이터로 보낼 수 있다. 어쩌면 void*가 더 어울리는 인자형일 수 있겠다. 비슷한 인자형이 다른 함수에도 등장하는 데, 마찬가지로 이런 규칙으로 이해해 두기로 하자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.