🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
4 messages
4 total messages Started by Bogumila Zawistowska Mon, 08 Dec 1997 10:59
browser w perlu , exec
#772
Author: Bogumila Zawistowska
Date: Mon, 08 Dec 1997 10:59
10 lines
907 bytes
Pisze programik
exec "nazwa hosta 80|tee nazwa_pliku";
#aby zapisac wszelkie komunikaty programu do nazwa_pliku
print"GET/index.html"

wsszystko to dziala recznie , ale sesja telneta nie  nie czyta tego 
co napisane po print

--
http://wizard.ae.krakow.pl/~kni      lech z                 
Re: browser w perlu , exec
#773
Author: Mariusz Krukowski
Date: Mon, 08 Dec 1997 11:28
16 lines
1103 bytes
Bogumila Zawistowska wrote:
> 
> Pisze programik
> exec "nazwa hosta 80|tee nazwa_pliku";
        ^^^^^
Znaczy sie tu mial byc telnet?

> #aby zapisac wszelkie komunikaty programu do nazwa_pliku
> print"GET/index.html"
> 
> wsszystko to dziala recznie , ale sesja telneta nie  nie czyta tego
> co napisane po print

Nigdy mi sie nie udalo zmusic programu telnet do takiej pracy.
Natomiast bez problemu dziala otwarcie socketa oraz pisanie
i czytanie z niego.
Re: browser w perlu , exec
#774
Author: Piotr Piatkowski
Date: Mon, 08 Dec 1997 11:30
42 lines
1943 bytes
Bogumila Zawistowska <zawistow@ibm.uci.agh.edu.pl> wrote:
: Pisze programik
: exec "nazwa hosta 80|tee nazwa_pliku";
: #aby zapisac wszelkie komunikaty programu do nazwa_pliku
: print"GET/index.html"

: wsszystko to dziala recznie , ale sesja telneta nie  nie czyta tego 
: co napisane po print

Ech... Przede wszystkim exec powoduje zastąpienie aktualnego procesu 
tym uruchomionym. Więc nic co jest po exec nie ma prawa się wykonać 
(chyba że exec się nie powiódł).

Po drugie - jeżeli chcesz pisać do procesu, to trzeba jakoś skierować
dane do jego STDIN. Najprościej zrobić to funkcją open, np. tak:

open( TELNET, "|telnet host 80" ) or die "$!";
print TELNET "GET /index.html";

ale to i tak niewiele da - po pierwsze trudno jest odczytać proces 
jednocześnie do pisania i czytania (ale da się - perldoc open2), a po
drugie to zupełnie bez sensu używać do tego telneta.

Najprościej będzie tak:

use IO::Socket;

my $sock = new IO::Socket::INET ( PeerAddr => "www:80",
                                  Proto => "tcp" );

die "$!" if ! defined $sock;

$sock->autoflush( 1 );

$sock->print "GET / HTTP/1.0\n\n";

while(<$sock>) {
  print "->$_;
}

-- 
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: browser w perlu , exec
#775
Author: Piotr Piatkowski
Date: Mon, 08 Dec 1997 13:08
42 lines
2041 bytes
Bogumila Zawistowska <zawistow@ibm.uci.agh.edu.pl> wrote:
: Pisze programik
: exec "nazwa hosta 80|tee nazwa_pliku";
: #aby zapisac wszelkie komunikaty programu do nazwa_pliku
: print"GET/index.html"

: wsszystko to dziala recznie , ale sesja telneta nie  nie czyta tego 
: co napisane po print

Ech... Przede wszystkim exec powoduje zastąpienie aktualnego procesu 
tym uruchomionym. Więc nic co jest po exec nie ma prawa się wykonać 
(chyba że exec się nie powiódł).

Po drugie - jeżeli chcesz pisać do procesu, to trzeba jakoś skierować
dane do jego STDIN. Najprościej zrobić to funkcją open, np. tak:

open( TELNET, "|telnet host 80" ) or die "$!";
print TELNET "GET /index.html";

ale to i tak niewiele da - po pierwsze trudno jest odczytać proces 
jednocześnie do pisania i czytania (ale da się - perldoc open2), a po
drugie to zupełnie bez sensu używać do tego telneta.

Najprościej będzie tak:

use IO::Socket;

my $sock = new IO::Socket::INET ( PeerAddr => "www:80",
                                  Proto => "tcp" );

die "$!" if ! defined $sock;

$sock->autoflush( 1 );

$sock->print( "GET / HTTP/1.0\n\n");

while(<$sock>) {
  print "->$_;
}

-- 
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads