더북(TheBook)

따라서 받는 쪽에서 데이터그램 유실이나 순서 뒤바뀜 혹은 중복 수신 현상이 발생해도 괜찮을 때만 UDP를 사용하는 것이 좋습니다. 예를 들어 동영상이나 음성 데이터를 보낼 때는 중간에 좀 잃어버리더라도 뒤이어서 오는 다른 데이터들을 계속 출력해 주면 크게 불편함을 느끼지 않습니다. 네트워크 게임에서는 캐릭터가 이동할 때마다 계속해서 보내 주는 이동 정보(캐릭터 위치 등)를 보낼 때 UDP를 쓰기도 합니다. 비록 중간에 데이터그램 유실이 생겨도 이어서 도착하는 캐릭터 이동 정보가 보완해 주기 때문입니다.

여러분 프로그램이 UDP로 데이터를 주고받으려면 소켓(socket)을 생성해야 합니다. 소켓은 단말기 사이에 통신할 수 있게 운영체제에서 제공하는 자원입니다. 파일을 읽고 쓰려면 파일 핸들(f ile handle) 혹은 파일 디스크립터(f ile descriptor, fd)를 생성해야 하듯이, 통신을 하려면 소켓을 생성해야 합니다. 소켓을 생성하면 소켓 핸들 값이 반환되며, 이는 대부분 운영체제에서 int32 타입입니다.

코드 단말기 A 11.22.33.44에서 송신

main()
{
    s = socket(UDP);                        // ➊
    s.bind(any_port);                       // ➋
    s.sendTo("55.66.77.88:5959", "hello");  // ➌
    s.close();                              // ➍
}

 

C 언어에서 소켓을 생성할 때 쓰는 함수는 socket()입니다. 여기에 매개변수로 UDP를 쓰겠다고 선언하면 소켓 핸들을 받습니다().

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