Forum Webscript.Ru
Программирование => Perl => Тема начата: 09h от 19 Мая 2006, 01:16:44
-
use Socket;
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname(\'tcp\'));
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
$msg = "\\x05\\x01\\x00";
send (SOCK, "$msg", 0);
sysread(SOCK,$answer_data,1024);
print_data($answer_data);
$msg = "\\x05\\x02\\x00\\x01\\xcd\\xbc\\x93\\x2e\\x09\\xf2";
send (SOCK, "$msg", 0);
sysread(SOCK,$answer_data,1024);
print_data($answer_data);
#FUNCTIONS
sub print_data() { # выводим данные в hex
my ($data)=@_;
my $i=0;
foreach(split(//,$data)) {
print unpack(\'H8\',$_)." ";
$i++;
if ($i eq 16) {
print "
\\n";
$i=0;
}
}
print "
\\n";
}
проблема: если делаю send (SOCK, "$msg", 0); больше 2-х раз скрипт вешается или оооочень долго думает.
как подольше пообщатся с сервером? запустил прогу которая через прокси сокс5 работает и снифером выдернул весь разговор
запрос - ответ:
05 01 00 - 05 00
05 02 00 01 cd bc 93 2e 09 f2 - 05 00 00 01 45 2f 67 8b 0e 40
05 02 00 02 - 05 00
05 01 00 03 0d 6c 6f 67 69 6e 2e 69 63 71 2e 63 6f 6d 14 46 - 05 00 00 01 45 2f 67 8b 0e 4d
... - ...
как этот разговор клиент-сервер реализовать?
-
хмм... оно даже если и 2 раза send делаю всеравно часто на долго задумывается(( а разговор снифером видно, все ок. но на 3-й send сервер не отвечает... в чем проблема?
-
попробуй вместо send - syswrite SOCK $x, или print SOCK $x
может что нибудь изменится. или еще осылать символ \\n в в конце каждого послания.
-
А какова вообще задача. Возможно этот модуль и не нужен.
-
задача разобратся с сокетом (как осуществить такой разговор клиента с сервером) ) можно и не на этом примере
-
$sock = IO::Socket::INET->new(PeerAddr => "$server_smtp:smtp(25)", Timeout => 4))
sysread $sock,$buf,255;
print "1: $buf";
syswrite $sock, "helo word\\r\\n";
sysread $sock,$buf,255;
print "2: $buf";
syswrite $sock, "quit\\r\\n";
sysread $sock,$buf,255;
print "3: $buf";
close $sock;
Рабочий пример "диалога" с smtp сервером. Как раз клиент с сервером.
-
xames, вай маладэц. Харашо сказал, да
-
что-то не нравится?
-
да нет, я в прямом смысле.
Кстати я раньше не пользовался модулями для работы с сокетами под Перлом. Вот настала серьезная необходимость. Ты по какой литературе изучал? Только не отсылай на Гугл. Мне интересно именно твое мнение.
-
Вот хорошая литература по Perl (http://books.0x10.net/), выложил в свое время до сих пор хранится))). Там как раз таки и есть хорошая книга (programming the network with perl), показывающся примеры работы с сетью на различном уровне, в том числе и с сокетами.
-
Мая твая сказать бальшая спасиба