Forum Webscript.Ru
Программирование => Perl => Тема начата: DrumSe от 28 Июля 2004, 01:48:52
-
Не подскажите как пользоваться функцией recv??? Она мне нужна для получения сообщений от сервера???
Заранее благодарен
-
После создания сокета ты можешь получить сообщение созданное клиентом через recv() метод.
$Socket->recv($text,128);
print "Получено сообщение: $text \\n";
первый аргумент - собственно ответ а второй - количество байт которые сервер может принять.
-
А если второй аргумент опустить?!
-
DrumSe знаеш анегдот про попугая и веревку?
а если в команде print сделать 3 ошибки?!
-
ыыыыыыыыыыыыыыыы
понял...
-
Проблемка маленькая оталась....
Ввожу команду
help
Пишет
Comand \' \' not understood;
ENTER
и весь хелп выводит?!
-
Кто-нибудь знает?!
-
DrumSe telepatov.net
Где ты ее вводишь?
-
запуская скрипт и там ввожу...
-
Капец... Мне можно начинать угадывать что за скрипт ты запускаешь?
-
NeoNox
Пора записаться на тренининг телепатических способностей... ;)
-
#!/usr/bin/perl -w
use Socket;
$str = @ARGV;
if ($str != "2")
{
print "usage: inet.pl adress port\\n";
}
$host=$ARGV[0];
$port=$ARGV[1];
socket($server, PF_INET, SOCK_STREAM, getprotobyname(\'tcp\'));
$inet_addr = inet_aton($host);
$paddr = sockaddr_in($port, $inet_addr);
connect($server,$paddr) || die "Error while connecting:$!\\n";
select((select($server), $| = 1)[0]);
print "Connection established, maybe\\n";
while (1)
{
print "Enter a command:\\n";
$cmd = ;
chomp $cmd;
print $server "$cmd\\n";
recv($server,$text,500,0);
print $text;
}
close ($server);
-
DrumSe а теперь, пожалуйста, прокомментируй каждую строчку этого скрипта.
-
#!/usr/bin/perl -w
use Socket;
$str = @ARGV;
if ($str != "2") #если аргументы полученные из командной строки не равны 2 то пишем ошибку
{
print "usage: inet.pl adress port\\n";
}
$host=$ARGV[0];
$port=$ARGV[1];
socket($server, PF_INET, SOCK_STREAM, getprotobyname(\'tcp\')); #СОздаем сокет
$inet_addr = inet_aton($host);
$paddr = sockaddr_in($port, $inet_addr);
connect($server,$paddr) || die "Error while connecting:$!\\n";
select((select($server), $| = 1)[0]); # вкл. буферезацию
print "Connection established, maybe\\n";
# А теперь вводим команды:
while (1)
{
print "Enter a command:\\n";
$cmd = ;
chomp $cmd;
print $server "$cmd\\n";
recv($server,$text,500,0);
print $text;
}
close ($server);#закрываем сокет
-
DrumSe:
select((select($server), $| = 1)[0]); # вкл. буферезацию
выкл. а не вкл.
и что дальше ты делаешь?
запусти как
./inet.pl forums.webscript.ru 80
и введи команду:
GET / HTTP/1.0
-
select((select($server), $| = 1)[0]); # вкл. буферезацию
выкл. а не вкл.
Все таки вкл. ...
Нет я включал inet.pl http://www.webscript.ru 21 ---> к примеру
И дальше вводил help
-
DrumSe:
Все таки вкл. ...
откуда ты это взял??
-
2NeoNox
ошибся, извини...
ты запути скрипт у себя и увидишь что происходит...
-
./serv 81.19.74.77 21
Connection established, maybe
Enter a command:
help
220 localhost FTP server ready
Enter a command:
list
214-The following commands are recognized (* =>\'s unimplemented).
USER PASS ACCT* CWD XCWD CDUP XCUP SMNT*
QUIT REIN* PORT PASV TYPE STRU MODE RETR
STOR STOU APPE ALLO* REST RNFR RNTO ABOR
DELE MDTM RMD XRMD MKD XMKD PWD XPWD
SIZE LIST NLST SITE SYST STAT HELP NOOP
FEAT OPTS ADAT* AUTH* CCC* CONF* ENC* MIC*
PBSZ* PROT*
214 Direct c <=== ВОТ ЗДЕСЬ У ТЕБЯ ЗАКОНЧИЛИСЬ 500 БАЙТ
Enter a command:
-
Дык проблема же в другом... Он на команды не попорядку отвечает....
Enter a command:
help
220 http://www.server.ru FTP server ready.
Enter a command:
просто ентер нажимаешь и вот хелп высвечивается