Как пропатчить приложение запускаемое через inetd для определения IP клиента. |
[исправить] |
Си:
struct sockaddr_in addr_name;
socklen_t addr_len;
addr_len = sizeof(addr_name);
bzero(&addr_name, sizeof(addr_name));
if (getpeername(0, (struct sockaddr *)&addr_name, &addr_len) >= 0){
// выводим адрес в printf через inet_ntoa(addr_name.sin_addr)
}
Perl:
use Socket;
my $std_sockaddr = getpeername(STDIN);
my $cur_ipaddr = "0.0.0.0";
if (defined $std_sockaddr){
my ($tmp_port, $tmp_iaddr) = sockaddr_in($std_sockaddr);
$cur_ipaddr = inet_ntoa($tmp_iaddr);
}
|
|
|
10.01.2003
, Автор: uldus
|
Раздел: Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Работа с сетью и IP адресами на Perl |