Для создания сокета UDP, например, к хосту про ремонт компьютеров в лобне , необходимо вызвать функцию socket (), указав семейство адресов AF_INET, тип сокета SOCK_DGRAM и номер протокола UDP. Константы AF_INET и SOCK_DGRAM определены и экспортируются по умолчанию модулем Socket, но для выборки номера протокола необходимо использовать вызов функции getprotobyname (). Ниже показана общая схема использования встроенной функции socket().
socket (SOCK* AF_INET, SOCK_DGRAM, scalar getprotobyname ('udp')) or die "socket() failed: $!";
Функции send() и recv()
Сразу после создания сокет UDP можно использовать в качестве оконечной точки связи. Для передачи дейтаграмм применяется функция send (), а для их приема функция recv(). До сих пор мы рассматривали эти функции в контексте отправки и получения срочных данных TCP. Для отправки дейтаграммы предусмотрена следующая общая схема:
$bytes = send (SOCK,$message/$flags,$dest_addr);
Функция send () с использованием сокета SOCK отправляет данные сообщения, содержащиеся в переменной $message, по адресу назначения, указанному параметром $dest_addr. Параметр $flags, который позволяет не только управлять отправкой внеочередных данных TCP, но и корректировать специализированные параметры маршрутизации, должен быть установлен равным 0. В качестве адреса назначения должен быть указан упакованный адрес сокета, созданный функцией sockaddr_in (). Как и другие адреса семейства AF_INET, этот адрес включает номер порта и IP-адрес назначения.