Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как создать соединение с HTTP сервером? 
:(
    Опции темы
Spieler
  Дата 5.1.2003, 01:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Послушайте, можно ли написать присоединение к HTTP серверу, не пользуясь всякими дополнительными модулями типа UserAgent? А то мне это нельзя... 8( :exclamation
  Вверх
Семён Розовых
Дата 6.1.2003, 00:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Конечно можно. Для этого надо всего лишь использовать модуль IO::Socket. Он входит в стандартную подставку Perl. Короче это делается так.

use IO::Socket;

$host=www.dwcgr0up.com;
$port=80; #Нам же надо по http

#Создаем новое соединение:
$socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port, Proto => "TCP") or die print "connection failed to $host:$port\n";

print $socket "GET http://www.dwcgr0up.com/index.php"  HTTP/1.1\n"; #Метод, запрашиваемя страница и версия протокола.

# Дальше и так всё понятно. Если нет, то почитай о протоколе HTTP.

print $socket "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*\n";
print $socket "Accept-Language: ru\n";
print $socket "Content-Type: application/x-www-form-urlencoded\n";
print $socket "Accept-Encoding: gzip, deflate\n";

print $socket "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)\n";
print $socket "Host: $host\n";
print $socket "Connection: Keep-Alive\n";
print $socket "Connection: close\n\n";
  Вверх
NightGoblin
Дата 7.1.2003, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: нет
Всего: 11



Можно обойтись и без объектного интерфейса. Вот простенькая прога, распечатывающая страничку с хоста, URL которой задан в командной строке (по умолчанию localhost/index.html):

Код

#!/usr/bin/perl

use Socket;

$PROTO = getprotobyname ('tcp'); # Номер протокола TCP
$PORT = 80; # Номер порта HTTP
$n = "\x0d\x0a"; # Символы новой строки в HTTP

$addr = shift || die ("Usage: $0 <URL>\n");

unless ($addr =~ m#^([\w\-\.]+)(?:/(.*))?$#) {
   die ("Incorrect URL format!\nUse something like www.myhost.org/path/page.html\n");
}

($server, $page) = ($1, $2);

# Создать сокет
socket (SERV, PF_INET, SOCK_STREAM, $PROTO) or die ("Cannot create socket: $!\n");

# Подключить сокет к удаленному серверу
connect (SERV, sockaddr_in ($PORT, inet_aton ($server))) or die ("Cannot connect to $server:$PORT: $!\n");

### Соединение установлено.

# Отключить буферизацию для дескриптора SERV
$oh = select (SERV);
$| = 1;
select ($oh);

# Запросить документ
print (SERV "GET /$page HTTP/1.0$n$n");

# Получить и вывести ответ сервера
while (<SERV>) {
   print;
}

# Закрыть соединение
close (SERV);


Уж Socket должен быть в любом дистрибутиве, даже на бесплатном хостинге :))


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
Unregistered
Дата 29.1.2003, 04:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А для использования любого модуля достаточно взять его на http://perl.com/CPAN/ бросить в папку со скриптом, а в теле скрипта прописать reqire Filename.pm
  Вверх
Nekto
Дата 5.2.2003, 00:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вообще-то, народ, сокеты многими сайтами обрубаются, т.е. вам не будет разрешать к ним подконектится. Это не есть хорошо. Есть иной выход, причем весьма неплохой - LWP.
Этот модуль позволяет стукаться к сайтам, смотреть инфу, брать контент (картинки не всчет), причем конектится он может и черех прокси и как угодно, хоть прикинувшись браузером. Кроме того, он позволяет играться HTTP заголовком. И разумеется, входящими в него кукями smile.gif
Взять можно со СПАНА
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.