Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Socket: Узнать IP адрес интерфейса 
:(
    Опции темы
eXeC001er
Дата 10.6.2011, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 16.11.2009

Репутация: нет
Всего: нет



Имеем UDP сокет, который висит на всех интерфейсах. Необходимо определить с какого интерфейса пришел DHCP запрос.
попробовал как описано ниже, но $ipaddr1 и $ipaddr2 остаются пустыми. IP адрес клиента понятное дело пуст, т.к. клиент первоначально не имееет IP, почему пусто в адресе сокета и как его всеже получить?
Код

#!/usr/bin/perl -w

use IO::Socket::INET;

my $sock = IO::Socket::INET->new(LocalPort => 67, Broadcast =>1, Proto => 'udp') or die "Cannot create socket: $!\n";

my $newmsg = ""; 
my $max_len = 1024;
while($sock->recv($newmsg, $max_len)) {
    if($newmsg) {
        my($port1, $ipaddr1) = sockaddr_in($sock->peername);
        my($port2, $ipaddr2) = sockaddr_in($sock->sockname);
        print "Client $ipaddr1:$port1 on NIC $ipaddr2:$port2\n";                                                                 
    }   
}



PM MAIL   Вверх
Pfailed
Дата 10.6.2011, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



В Linux есть опция сокета IP_PKTINFO. Похоже по описанию на то. Но в Perl эта опция и возвращаемая ей структура не поддерживаются, насколько я понял. Нужно будет делать XS обёртку.


--------------------
PM MAIL   Вверх
arto
Дата 13.6.2011, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



можно попробовать Net::Pcap или Net::RawIP
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.