|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 13 Mar 2002 20:21:58 To : John Lepikhin Subject : Re: сокеты -------------------------------------------------------------------------------- John Lepikhin wrote: > Как задать, с каких адресов разрешено подключаться к перловому > tcp-серверу? Я правильно понимаю, что коде: > > $my_addr = sockaddr_in($port, inet_aton("127.1.1")); > bind(SERVER, $my_addr); Hеправильно. bind задает привязку "слушающего" сокета к интерфейсу. (кстати, IP-адрес состоит из 4-х октетов, а не из 3-х). Таким образом, $my_addr = sockaddr_in($port, inet_aton("127.0.0.1")); bind(SERVER, $my_addr); указывает, что мы будем слушать входящие соединения на порту $port интерфейса 127.0.0.1. 127.0.0.1 - это локальный интерфейс и соединения на него возможны только с локальной машины (т.е. опять же с 127.0.0.1). Обычно, когда хотят принимать соединения с любого интерфейса используют: use Socket; bind(SERVER, INADDR_ANY); > "127.1.1" как раз определит разрешенный диапазон? А если > я хочу задать два жестко определенных адреса? Диапазон можно задать либо конфигурированием пакетного фильтра в ОС, либо принимая все соединения, но тут же закрывая "неразрешеные". my %allow = ('192.168.1.2' => 1, '192.168.5.5' => 1); my $paddr = accept(INSTANCE, SERVER) or die $!; my($client_port, $client_addr) = sockaddr_in($paddr); my $client = inet_ntoa($client_addr); if (!$allow{$client}) { setsockopt(INSTANCE, SOL_SOCKET, SO_LINGER, pack('ll', 0, 0)); shutdown(INSTANCE, 2); die "Bump! Bump!... He was an alien in our latin square, dude..."; } Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5284a15b0ad4.html, оценка из 5, голосов 10
|