Perl для системного администрирования



              

Распространенные ошибки при отправке почты - часть 9


print $socket wrapC"1."" join(" ".sort keys Vrissi^g) ).'"

}

Кроме переноса части кода в отдельные подпрограммы, главное изменение заключается в том, что добавлен код для работы с сетью. Модуль 10: : Socket позволяет без труда открывать и использовать сокеты, которые можно сравнить с телефоном. Сначала нужно установить свою сторону сокета (10: :Socket->new()), как бы включая свой телефон, а затем ждать «звонка» от клиента (10: :Socket»accept()). Программа приостановлена (или «заблокирована») до тех пор, пока не установлено соединение. Когда соединение установлено, запоминается имя подсоединившегося клиента. Затем из сокета считывается строка ввода.

Мы предполагаем, что строка ввода выглядит точно так же, как и строки из отдельных файлов в предыдущем примере. Единственное различие - это загадочное имя узла DUMPNOW. Если это имя встречается, подсоединившемуся клиенту выводится тема и тело готового к отправке сообщения, при этом сбрасываются все счетчики и хэш-таб-лицы. За отправку сообщения, полученного от сервера, ответственен клиент. Теперь посмотрим на пример клиента и узнаем, что он может сделать с этим сообщением:

use 10::Socket;

 номер порта для соединения с клиентом

Sserverport = "9967";

 и имя сервера

$servername = "reportserver";

ft преобразуем имя в IP-адрес

Sserveraddr = inet_ntoa(scalar gethostbyname($servername));

Sreporttoaddr = "project\@example.com";

Sreportf romaddr = "project\(g>example.com";

Sreserver = 10::Socket::INET->new(PeerAddr => Jserveraddr.

PeerPort => $serverport Proto => "tcp". Type => SCCK^STREAM) or ale

"Невозможно создать сокет -а нашей стороне:: $!\п":

if ($ARGV;;0] re "-ni"){

print Sreserver $ARGV[0]: v else {

use Mail::Mailer;

print Sreserver "DUMPNOW\T;

chomp($subject = <$reserver.>) $body = join("",<$reserver>);

$type="send!rmil";

my Smaller = Mail::Mailer->new($type) or die




Содержание  Назад  Вперед