Язык программирования Perl



   Магазин для художников for art магазин.             

Средства работы с сокетами - часть 2


while (my $client = $server->accept()) { # создаем поток для $client->autoflush(1); # клиента, очищаем буфер, my $message = <$client>; # читаем сообщение из него print $client "OK\n"; # посылаем ответ клиенту close $client; # и закрываем поток print STDERR $message; # выводим сообщение last if $message =~ /STOP/i; # выходим из цикла, если } # в сообщении есть STOP, close $server; # и закрываем сокет

Сокеты могут использоваться не только для обмена данными по сети, но и для межпроцессного взаимодействия, когда сервер и клиент работают на одном и том же компьютере. Для доступа к приведенному серверу можно использовать, например, такую клиентскую программу:

use IO::Socket; # используем модуль работы с сокетами my $server_host = '127.0.0.1'; # адрес сервера my $server_port = 5555; # и порт на нем my $socket = IO::Socket::INET->new( # создаем сокет Type => SOCK_STREAM, # для потокового обмена Proto => 'tcp', # по протоколу TCP PeerAddr => $server_host, # с удаленным адресом PeerPort => $server_port) # и портом or die "Ошибка соединения с $remote_host:$remote_port ($@)"; # сообщение задается my $message = $ARGV[0] || # параметром программы "Проверка связи!"; # или умолчанием print $socket "$message\n"; # отправляем его и my $answer = <$socket>; # принимаем ответ print "$answer"; # выводим ответ close $socket; # и закрываем сокет

Из этого незатейливого примера можно сделать такой вывод: для согласованной работы клиент и сервер должны следовать установленным "правилам общения" во время сеанса обмена данными, так называемому протоколу прикладного уровня. В нашем случае правила сводятся к тому, что обмен идет по порту 5555, сервер ждет от клиента только одно сообщение, клиент ждет обязательного ответа от сервера, который завершает работу по получении сообщения, в котором содержится строка 'STOP'. Подробные соглашения описываются в конкретных протоколах сетевого обмена, например: HTTP (передача гипертекстовых документов), SMTP (отправка электронной почты), FTP (передача файлов). Описание подобных протоколов и других соглашений публикуются в виде предложений RFC (Request For Comment) - фактических международных стандартов, на которые ориентируются разработчики сетевого программного обеспечения.




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