use Socket; # используем модуль работы с сокетами
my $host_name = 'www.perl.com'; # по имени хоста
my $address = gethostbyname($host_name); # узнаем адрес и
my $ip_address = inet_ntoa($address); # преобразуем его
print "$ip_address $host_name\n"; # в строку
# результат: 208.201.239.36 www.perl.com
$address = inet_aton($ip_address); # и обратно
my $host_name = gethostbyaddr($address,AF_INET);# узнаем имя
print "$ip_address $host_name\n"; # по адресу
# результат: 208.201.239.36 www.perl.com
Класс
use IO::Socket; # используем класс работы с сокетами
my $server_port = 5555; # порт для обмена
my $server = IO::Socket::INET->new( # создаем сокет
LocalPort => $server_port, # на порту
Type => SOCK_STREAM, # для потокового обмена
Proto => 'tcp', # по протоколу TCP
Listen => 10, # с 10-ю соединениями
Reuse => 1) #
or die "Ошибка запуска TCP сервера на $server_port ($@)";
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; # и закрываем сокет
Сокеты могут использоваться не только для обмена данными по сети, но и для межпроцессного взаимодействия, когда сервер и клиент работают на одном и том же компьютере. Для доступа к приведенному серверу можно использовать, например, такую клиентскую программу:
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии