Article View: pl.comp.lang.perl
Article #883Re: Perl i socket'y
From: Piotr Piatkowski
Date: Wed, 14 Jan 1998 11:58
Date: Wed, 14 Jan 1998 11:58
49 lines
2423 bytes
2423 bytes
Sebastian Lukasiewicz <d0roc@kmicic.is.com.pl> wrote:
: socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "Socket error\n";
: connect(SOCK, $paddr) || die "error\n";
: while($line = <SOCK>)
: {
: print $line;
: }
: Program sie laczy z serverem newsow i "wywala" taka linie :
: 200 lublin.pl InterNetNews NNRP server INN 1.5.1 17-Dec-1996 ready (posting ok).
: Chce zapisac liste grup newsowych na jakas zmienna. Wiem ze nalezy wyslac
: do serwera komende LIST. W jaki sposob mam przerobic ten programik zeby
: zapisywal mi na zmienna liste grup newsowych?
Na początek wyłącz buforowanie tego socketa, żeby komenda print od
razu przesyłała dane, a nie czekała aż się ich zbierze większa ilość:
select SOCK; $|=1; select stdout;
A później to już prosto:
# pobierz linię "powitalną" od serwera
$first_line = <SOCK>;
# pobierz listę
print SOCK "LIST\r\n";
while(<SOCK>) {
chop; chop;
last if /^\.$/; # kropka kończy listę grup
( $grupa, $pierwszy_art, $ostatni_art, $moderowana ) = split;
# tutaj wrzucasz do tablicy to co Cię interesuje, np:
push @grupy, $grupa;
}
# A tutaj już można robić coś dalej, np. odczytać listę dostępnych
# artykułów danej grupy przez LISTGROUP nazwa.grupy albo odczytać
# konkretny artykuł przez ARTICLE numer_artykułu
Zwróć uwagę, że praktycznie wszystkie protokoły zaznaczają koniec
linii nie przez \n, a przez \r\n, z czym wiąże się konieczność
obcięcia dwóch znaków z końca każdej linii, i dodania odpowiedniej
sekwencji na końcu tego co się wpisuje w print.
P.S. Program nie sprawdzony, mogą być błędy :-)
--
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Technical Details
Message-ID:
<69i996$blp$1@galaxy.uci.agh.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uucp-gw.cyf.gov.pl!news.wnaft.agh.edu.pl!agh.edu.pl!agh.edu.pl!not-for-mailReferences:
<Pine.LNX.3.93.980114070615.15703A-100000@kmicic.is.com.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!uucp-gw.cyf.gov.pl!news.wnaft.agh.edu.pl!agh.edu.pl!agh.edu.pl!not-for-mail From: Piotr Piatkowski <kompas@galaxy.uci.agh.edu.pl> Newsgroups: pl.comp.lang.perl Subject: Re: Perl i socket'y Date: 14 Jan 1998 12:58:30 +0100 Organization: University of Mining & Metallurgy Lines: 49 Message-ID: <69i996$blp$1@galaxy.uci.agh.edu.pl> References: <Pine.LNX.3.93.980114070615.15703A-100000@kmicic.is.com.pl> NNTP-Posting-Host: galaxy.uci.agh.edu.pl Mime-Version: 1.0 X-Newsreader: TIN [UNIX 1.3 unoff BETA 971018; sun4m SunOS 5.5.1] Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit