Строка 17. Получение ответа. Сообщение уже отправлено (или успешно поставлено в очередь), поэтому программа переходит в состояние ожидания ответа, например, от хоста представляющего каталог мобильных телефонов с ценами , с использованием функции recv (). Как и при вызове send (), вызывая эту функцию, нужно указать несколько параметров, в том числе сокет, переменную, в которой должны храниться полученные данные, и числовое значение, которое указывает максимальную длину ожидаемого сообщения.
Если сообщение получено, функция recv() копирует его содержимое в переменную $date вплоть до max_msg_len байтов. В случае ошибки функция recv ( ) возвращает значение undef и программа завершается сообщением об ошибке. В ином случае она возвращает упакованный адрес отправителя. В этом сценарии с адресом отправителя не выполняются какие либо действия, но мы найдем ему хорошее применение в примерах серверов, приведенным в следующих разделах.
Строки 18,19. Вывод ответа. В конце сообщения удаляются символы crlf с помощью функции chomp () и его содержимое выводится на стандартное устройство вывода.
Создание и использование сокетов UDP
Как показано в примере из предыдущего раздела, дейтаграммы UDP отправляются и принимаются через сокеты. Однако в отличие от сокетов TCP, здесь не выполняется подключение сокета с помощью функции connect () или приемных входящих запросов на установление соединения в результате вызова функции асcept (). Вместо этого можно начать передачу и прием сообщений через сокет сразу после его создания.