Forum Webscript.Ru

Программирование => Perl => Тема начата: DrumSe от 28 Июля 2004, 01:48:52

Название: RECV + SOket
Отправлено: DrumSe от 28 Июля 2004, 01:48:52
Не подскажите как пользоваться функцией recv??? Она мне нужна для получения сообщений от сервера???
Заранее благодарен
Название: RECV + SOket
Отправлено: NeoNox от 28 Июля 2004, 11:46:54
После создания сокета ты можешь получить сообщение созданное клиентом через recv() метод.
$Socket->recv($text,128);
print "Получено сообщение: $text \\n";
первый аргумент - собственно ответ а второй - количество байт которые сервер может принять.
Название: RECV + SOket
Отправлено: DrumSe от 28 Июля 2004, 12:54:47
А если второй аргумент опустить?!
Название: RECV + SOket
Отправлено: NeoNox от 28 Июля 2004, 13:14:06
DrumSe знаеш анегдот про попугая и веревку?
а если в команде print сделать 3 ошибки?!
Название: RECV + SOket
Отправлено: DrumSe от 29 Июля 2004, 01:12:25
ыыыыыыыыыыыыыыыы
понял...
Название: RECV + SOket
Отправлено: DrumSe от 29 Июля 2004, 01:35:19
Проблемка маленькая оталась....
Ввожу команду
help
Пишет
Comand \' \' not understood;
ENTER
и весь хелп выводит?!
Название: RECV + SOket
Отправлено: DrumSe от 02 Августа 2004, 23:39:45
Кто-нибудь знает?!
Название: RECV + SOket
Отправлено: NeoNox от 03 Августа 2004, 00:19:54
DrumSe telepatov.net
Где ты ее вводишь?
Название: RECV + SOket
Отправлено: DrumSe от 03 Августа 2004, 00:25:19
запуская скрипт и там ввожу...
Название: RECV + SOket
Отправлено: NeoNox от 03 Августа 2004, 00:37:26
Капец... Мне можно начинать угадывать что за скрипт ты запускаешь?
Название: RECV + SOket
Отправлено: commander от 03 Августа 2004, 09:47:36
NeoNox
Пора записаться на тренининг телепатических способностей... ;)
Название: RECV + SOket
Отправлено: DrumSe от 03 Августа 2004, 17:08:50
#!/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);
Название: RECV + SOket
Отправлено: NeoNox от 03 Августа 2004, 18:59:02
DrumSe а теперь, пожалуйста, прокомментируй каждую строчку этого скрипта.
Название: RECV + SOket
Отправлено: DrumSe от 04 Августа 2004, 17:48:15
#!/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);#закрываем сокет
Название: RECV + SOket
Отправлено: NeoNox от 04 Августа 2004, 18:48:51
Цитировать
DrumSe:
select((select($server), $| = 1)[0]); # вкл. буферезацию

выкл. а не вкл.

и что дальше ты делаешь?

запусти как
./inet.pl forums.webscript.ru 80
и введи команду:
GET / HTTP/1.0
Название: RECV + SOket
Отправлено: DrumSe от 05 Августа 2004, 00:01:41
Цитировать

select((select($server), $| = 1)[0]); # вкл. буферезацию

выкл. а не вкл.

Все таки вкл. ...

Нет я включал inet.pl http://www.webscript.ru 21 ---> к примеру
И дальше вводил help
Название: RECV + SOket
Отправлено: NeoNox от 05 Августа 2004, 00:08:42
Цитировать
DrumSe:
Все таки вкл. ...

откуда ты это взял??
Название: RECV + SOket
Отправлено: DrumSe от 05 Августа 2004, 00:37:30
2NeoNox
ошибся, извини...
ты запути скрипт у себя и увидишь что происходит...
Название: RECV + SOket
Отправлено: NeoNox от 05 Августа 2004, 11:44:50
Цитировать
./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:
Название: RECV + SOket
Отправлено: DrumSe от 05 Августа 2004, 13:27:06
Дык проблема же в другом... Он на команды не попорядку отвечает....
Enter a command:
help
220 http://www.server.ru FTP server ready.
Enter a command:
просто ентер нажимаешь и вот хелп высвечивается