Re: perl pack/unpack
От: Rebus83 Россия  
Дата: 08.10.06 20:09
Оценка:
Здравствуйте, Knuckles, Вы писали:

K>Надо переписать перловый скрипт на си либо паскаль (неважно, лишь бы от скрипта избавиться).

K>Вот основной кусок, с которым у меня проблеммы:
K> $src_ip = inet_ntoa ( pack ( "N", unpack ( "%32l" , $src_ip ) ) );
K> $dst_ip = inet_ntoa ( pack ( "N", unpack ( "%32l" , $dst_ip ) ) );

Функция inet_ntoa() преобразует IP-адрес in, заданный в
сетевом порядке расположения байтов, в стандартный
строчный вид, из номеров и точек. Строка располагается в
статически размещенном буфере; последующие вызовы
перепишут его данные.


Это отсюда. Думаю, из описания понятно, что должно было располагаться в $src_ip и dst_ip до этих двух строчек, и что оказалось там после.

K> $bytes = unpack ( "%32I" , $bytes );

K> $packets = unpack ( "%32I" , $packets );
K> $src_port = unpack ( "%16S" , $src_port );
K> $dst_port = unpack ( "%16S" , $dst_port );
K> $t_class = unpack ( "%16S" , $t_class );
K> $timestamp = unpack ( "%32I" , $timestamp );
K>Пытался разобраться, что тут вообще происходит, но это пока выше моих сил.
K>В общем подскажите, как то же самое реализовать. Была идея импортировать эти функции из perl58.dll... но тут я тоже неуверен, как правильно сделать. Словом мысли в эту сторону тоже приветствуются. Зачем писать заново, если есть готовое?

Hint: доку по функциям pack/unpack можно посмотреть здесь и здесь.
Если кратко, то разбирается какая-то информация, явно связанная с работой с протоколом IP: в "пригодном для прочтения" и понимания виде получается информация об IP-адресах источника и приемника, числе [переданных|принятых] байт и пакетов, портах источника и приемника, и пр. Если хотите подробнее, приводите весь код.

PS импортировать это из perl58.dll скорее всего не получится, да и не нужно. Часто, функции Перл являются надстройками над аналогичными C-функциями в Unix, так что проще обратиться к первоисточнику.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.