информационная безопасность
без паники и всерьез
 подробно о проекте
Сетевые кракеры и правда о деле ЛевинаЗа кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модульный ботнет от русских хакеров 
 Торвальдс и вайбтестеры 
 Атака на GitHub 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Разобрался на половину 17.08.01 06:28  Число просмотров: 1109
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> binmode (LOAD);
> select(LOAD); $|=1;
> select(STDOUT);
> print LOAD "GET /index.htm HTTP/1.0\n\n";

> Обьясни почему надобыло ставить binmode на LOAD???

Птому что не все системы одинаково сохраняют в текстовые файлы esc-последовательности, введенные с клавиатуры ( симолы типа \n \r \t и т.п. )
Т.е. если файл создан в виндах, и мы пытаемся его прочитать как строку (как текстовый файл) из nix, то на месте \n будет совсем не \n (точно так же и с виндами),
для этого мужик и определил, что сокет является бинарным - чтобы искажений и глюков при чтении строк не происходило.

По поводу LWP - с его помощью можно виртуальный браузер создавать - удобнее (но не таком низком уровне, как с сокетами).
<programming>
[Perl] Socket cоединение... 12.08.01 23:24  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Накиньте пример соединения с сервером.....
И посылка пакета или запроса (TCP)

А то прогу с си переделать не могу...
[Perl] Socket cоединение... 14.08.01 02:53  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Накиньте пример соединения с сервером.....
> И посылка пакета или запроса (TCP)
>
> А то прогу с си переделать не могу...

прототипы написаны на C.

perldoc Socket
perldoc IO::Socket
perldoc IO::Socket::INET
perldoc IO::Socket::UNIX
perldoc getpeername
perldoc POSIX
[Perl] При получении виснет... 14.08.01 11:43  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот текст программы:
#!usr/bin/perl
use Socket;
socket(SERVER,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
$remote_host="dialup.mtu.ru";
$remote_port=80;
$internet_addr = inet_aton($remote_host);
$paddr = sockaddr_in($remote_port,$internet_addr);
connect(SERVER,$paddr)||die "connect";
send (SERVER,"GET /index.htm HTTP/1.0\r\n",0);
recv(SERVER,$d,1,0);
close(SERVER);

Но при получении инфы из сокета (recv())прога подвисает, пока не отрубишься от инета.

Ещё один баг: если не закрывать сокет в конце проги, то не отсылается даже запрос send()???
[Perl] При получении виснет... 16.08.01 06:11  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> use Socket;

Почему не IO::Socket::INET или IO::Socket ?

> socket(SERVER,PF_INET,SOCK_STREAM,getprotobyname('tcp'));

после этого, желательно сказать setsockopt(..<настройки>..)

> $remote_host="dialup.mtu.ru";
> $remote_port=80;
> $internet_addr = inet_aton($remote_host);
> $paddr = sockaddr_in($remote_port,$internet_addr);
> connect(SERVER,$paddr)||die "connect";
> send (SERVER,"GET /index.htm HTTP/1.0\r\n",0);
> recv(SERVER,$d,1,0);

длина полученного сообщения превышает 1 байт (а может быть из за того, что setsockopt не сказал).

> close(SERVER);
>
> Но при получении инфы из сокета (recv())прога подвисает,
> пока не отрубишься от инета.

Для такой (именно такой) задачи проще использовать HTTP::Request и LWP

> Ещё один баг: если не закрывать сокет в конце проги, то не
> отсылается даже запрос send()???

Это не баг. (возможно создается сокет, который занят процессом, пока его не уьъешь(процесс) , естественно этот же сокет использовать нельзя)
[Perl] А если... 16.08.01 06:18  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> send (SERVER,"GET /index.htm HTTP/1.0\r\n",0);
> recv(SERVER,$d,1,0);

Get /index.htm HTTP/1.0\r\n - вот такая штука возможно не пройдет.

Для такой (именно такой) задачи проще использовать
HTTP::Request и LWP - с ними можно очень лихо всякие посты и геты делать.
Разобрался на половину 16.08.01 11:12  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Get /index.htm HTTP/1.0\r\n - вот такая штука возможно не
> пройдет.

Это я здурил: надо \n\n вместо \r\n (но от этого легче не стало)
А вот пример я надыбал, он рабочий:

use Socket;
$port=80;
$AF_INET=($] > 5 ? AF_INET : 2);
$SOCK_STREAM=($] > 5 ? SOCK_STREAM: 1);
$protocol=(getprotobyname('tcp'))[2];
$addr=(gethostbyname("dialup.mtu.ru"))[4];
$addrs=pack ('S n a4 x8', $AF_INET, $port, $addr);
socket(LOAD,$AF_INET,SOCK_STREAM,$protocol)|
die "Couldn`t create socket";
connect(LOAD, $addrs);
binmode (LOAD);
select(LOAD); $|=1;
select(STDOUT);
print LOAD "GET /index.htm HTTP/1.0\n\n";
binmode (STDOUT);
while (sysread (LOAD, $what, 2048)){
print $what;

Обьясни почему надобыло ставить binmode на LOAD???
Разобрался на половину 17.08.01 06:28  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> binmode (LOAD);
> select(LOAD); $|=1;
> select(STDOUT);
> print LOAD "GET /index.htm HTTP/1.0\n\n";

> Обьясни почему надобыло ставить binmode на LOAD???

Птому что не все системы одинаково сохраняют в текстовые файлы esc-последовательности, введенные с клавиатуры ( симолы типа \n \r \t и т.п. )
Т.е. если файл создан в виндах, и мы пытаемся его прочитать как строку (как текстовый файл) из nix, то на месте \n будет совсем не \n (точно так же и с виндами),
для этого мужик и определил, что сокет является бинарным - чтобы искажений и глюков при чтении строк не происходило.

По поводу LWP - с его помощью можно виртуальный браузер создавать - удобнее (но не таком низком уровне, как с сокетами).
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach