Этот клиент может применяться для взаимодействия со многими серверами, предназначенными для обмена данными в виде строк, но с помощью этого клиента нельзя успешно обратиться к одной из служб Internet — службе удаленной регистрации Telnet. Это связано с тем, что серверы Telnet перед открытием сеанса обмениваются с клиентом некоторой двоичной информацией протокола. При попытке подключиться к порту Telnet (порт 23) с помощью этого клиента появятся только какие-то странные символы, а затем наступит пауза, в течение которой сервер будет ожидать, пока клиент не завершит этап установления соединения по этому протоколу. Для взаимодействия с серверами Telnet может применяться модуль Net::Telnet. Использование его также просто, как купить нижнее белье оптом на alen-mark.ru.
Объектно-ориентированная библиотека IO::Socket значительно упрощает сетевое программирование, поскольку позволяет устранить большую часть “громоздкого кода”, унаследованного от API-интерфейса сокетов языка С, и заменить его простым и удобным интерфейсом. В оставшейся части данной книги применяются объекты IO::Socket, созданные с использованием гибкого метода new() этого модуля, и методы этих объектов во всех случаях, когда они обеспечивают значительное упрощение синтаксической структуры (например, как в вызове $sock->accept()). Если объектно-ориентированные вызовы не имеют ощутимых синтаксических преимуществ перед функционально-ориентированными, например, как при сравнении $sock->read($data, 1024) и read($sock, $data, 1024), применяются встроенные функции Perl, которые обеспечивают более высокую производительность.
Модуль IO::Socket позволяет легко создавать простые клиентские и серверные программы, такие как Web-клиент и инвертирующий эхо-сервер, описанные ранее. Однако неожиданно возникли сложности при попытке разработать внешнее простое инструментальное средство эхо-повтора команд пользователя, передаваемым на сервер и обратно. Для решения этой проблемы было создано два процесса с использованием функции fork (). Далее будет снова рассматриваться тема борьбы с тупиковыми ситуациями.
Вы теперь узнали, как строить сетевые приложения на основе библиотеки сокетов низкого уровня. Далее происходит переход на более высокий уровень, для обеспечения взаимодействия программы с протоколами прикладного уровня.