ADSL
Petr Spodniak
pspodniak at broadnet.cz
Fri Apr 25 11:55:20 CEST 2003
Zdravim,
> nezkousel jste nekdo napsat script na automaticke prihlseni?
>
Zatim jsem takovy skript nepsal. Nemam k dispozici ADSL Basic.
Nicmene nemel by to byt problem. Jedna se v podstate o nasledujici
postup:
- open socket
- provedeni HTTP dotazu (GET ...)
- nacteni a dekodovani odpovedi
- sestaveni noveho HTTP dotazu (PUT...)
- nacteni a dekodovani odpovedi
- uzavreni socketu
To cele by melo byt spousteno na zaklade nejakeho mechanismu, ktery
kontroluje dostupnost nejakych zdroju na internetu (napr. pingem).
V perlu by to nemel byt problem. Staci pouzit class Net::Telnet, ktery
umoznuje pohodlnou praci s TCP streamem.
Pokud se nekdo rad "racha" v kodu na nizsi urovni tak tady je ideovy
navrh (okomentovany ;-) - je to vystrizeno/upraveno z funkcniho
programu; tak jak to je by to melo vypsat HTTP odpoved ze serveru;
vyzaduje pouze class Socket ketry by mel byt v zakladni distribuci
perlu):
#!/usr/bin/perl
use Socket;
$| = 1;
my $host = "adresa nebo hostname" # napr. "www.seznam.cz";
my $url = "URL" # napr."http://www.seznam.cz/";
eval { # kvuli timeoutu nutno pouzit eval (v podstate forkne
dalsi thread a ceka na jeho dokonceni)
local $SIG{ALRM} = sub { die "timeout\n" }; # handler pro signal ALARM
- ukonci thread a nastavi navratovy kod na "timeout"
alarm $timeout; # system posle threadu signal ALARM za $timeout
sekund
my $ip_addr = inet_aton( $host ) || die "unknown remote host"; #
resolvovani a konverze hostname na IP adresu
socket(SOCK, AF_INET, SOCK_STREAM, 0) || die "cannot allocat socket"; #
vytvoreni socketu
connect(SOCK, sockaddr_in(80, $ip_addr)) || die "cannot connectio to
$host:80\n"; # vytvoreni vlatniho spojeni
select SOCK; # zakaz buffering pro otevreny socket
$| = 1;
print SOCK "GET $path HTTP/1.0\n\n"; # posli dotaz
select STDOUT;
while (<SOCK>) {
print ; # jen vypis odpovedi
if (/^HTTP.*200 OK/); {
# tady je potreba nacist zbytek odpovedi
# a poslat novy dotaz
}
}
close (SOCK); # uzavri socket
}; # ukonci thread
alarm 0; # zrus pozadavek na poslani signalu ALARM
--
Petr Spodniak <pspodniak at broadnet.cz>
More information about the Users-l
mailing list