🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #1074

Re: Przykłady klienta/serwera TCP/IP ?

#1074
From: Stefan Batory
Date: Tue, 10 Mar 1998 17:03
80 lines
2490 bytes
Waldek Grudzień wrote:

> I dlatego ponawiam moją prośbę o jakieś adresy z kompletnymi przykładami
> klienta/serwera (przeszukując sieć niestety nic sensownego nie znalazłem
> (oprócz przykładów z perl mana))
>

Mam nadzieje, że to pomoże i coś wyjaśni:
Powinno działać. kod jest prosty i jedyną rzeczą jaką klient robi to odbieranie
i wysyłanie ale na tej bazie udało mi się zrobić kilka bardziej skomplikowanych
rzeczy
Powodzenia

--Stefan Batory


#!/usr/bin/perl

($them, $port) = @ARGV ;

$port = 2345 unless $port ;
$them = 'localhost' unless $them ;

$AF_INET = 2 ;
$SOCK_STREAM = 1 ;

$SIG{'INT'} = 'dokill' ;

sub dokill {
    kill 9,$child if $child ;
}

$sockaddr = 'S n a4 x8' ;

chop($hostname = 'hostname') ;

($name, $aliases, $proto) = getprotobyname('tcp') ;
($name, $aliases, $proto) = getservbyport($port,'tcp')
    unless $port =~ /^\d+$/ ;

($name, $aliases, $type, $len, $thisaddr) =
    gethostbyname($host) ;
($name, $aliases, $type, $len, $thataddr) = gethostbyname($them) ;

$this = pack($sockaddr, $AF_INET, 0, $thisaddr) ;
$that = pack($sockaddr, $AF_INET, $port, $thataddr) ;

if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
    print "socket ok\n" ;
} else {
    die $! ;
}

if (bind(S, $this)) {
    print "bind ok\n" ;
} else {
    die $! ;
}

if (connect(S, $that)) {
    print "connection ok\n" ;
} else {
    die $! ;
}


select(S) ; $| = 1 ; select(STDOUT) ;


if($child = fork) {
    while (<STDIN>) {
        print S ;
    }
    sleep 3 ;
    do dokill() ;
} else {
    while(<S>) {
        print ;
    }
}
Technical Details
Message-ID: <35057252.1E1D28A5@mikrus.pw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail
References: <Pine.HPP.3.96.980306154700.20180F-100000@clinicom.uhc.lublin.pl> <35007E76.A43E26DF@webcorp.com.pl> <Pine.HPP.3.96.980309073152.28885C-300000@clinicom.uhc.lublin.pl> <3503FDF8.E0CFBDD2@webcorp.com.pl> <Pine.HPP.3.96.980310081012.5068B-100000@clinicom.uhc.lublin.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!not-for-mail
From: Stefan Batory <stefan@mikrus.pw.edu.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: Przykłady klienta/serwera TCP/IP ?
Date: Tue, 10 Mar 1998 17:03:14 +0000
Organization: http://news.icm.edu.pl/
Lines: 83
Message-ID: <35057252.1E1D28A5@mikrus.pw.edu.pl>
References: <Pine.HPP.3.96.980306154700.20180F-100000@clinicom.uhc.lublin.pl> <35007E76.A43E26DF@webcorp.com.pl> <Pine.HPP.3.96.980309073152.28885C-300000@clinicom.uhc.lublin.pl> <3503FDF8.E0CFBDD2@webcorp.com.pl> <Pine.HPP.3.96.980310081012.5068B-100000@clinicom.uhc.lublin.pl>
NNTP-Posting-Host: starbat.mikrus.pw.edu.pl
Mime-Version: 1.0
X-Mailer: Mozilla 4.04 [en] (X11; I; Linux 2.0.33 i586)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit