Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: сокеты   Andrey Sapozhnikov   13 Mar 2002 20:21:58 
 сокеты   Poul Deniskin   14 Mar 2002 03:59:18 
Архивное /ru.perl/5284a15b0ad4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional