Thread View: pl.comp.lang.perl
8 messages
8 total messages
Started by Waldek Grudzień
Fri, 06 Mar 1998 14:52
Przykłady klienta/serwera TCP/IP ?
Author: Waldek Grudzień
Date: Fri, 06 Mar 1998 14:52
Date: Fri, 06 Mar 1998 14:52
12 lines
959 bytes
959 bytes
Czy ktoś zna jakiś adres z przykładami klienta/Serwera TCP/IP w
PERL'u ? (oprócz tych z PERL manuala (pod))
Pozdrawiam,
Waldek Grudzien
///////////////////////////////////////////
// http://www.uhc.lublin.pl/~waldekg/ //
// Lublin/Lubartow, Poland //
\\ University Health Care \\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Re: Przykłady klienta/serwera TCP/IP ?
Author: Piotr Piatkowski
Date: Fri, 06 Mar 1998 22:53
Date: Fri, 06 Mar 1998 22:53
14 lines
1049 bytes
1049 bytes
Waldek Grudzień wrote: > > Czy ktoś zna jakiś adres z przykładami klienta/Serwera TCP/IP w > PERL'u ? (oprócz tych z PERL manuala (pod)) Nie wiem które przykłady masz na mysli, ale czy widziałes perldoc IO/Socket ? Bo przykłady tam umieszczone są już tak proste, że nie bardzo widzę potrzebę czegos prostszego... -- Piotr Piatkowski, WEB Corporation Polska sp. z o.o.
Re: Przykłady klienta/serwera TCP/IP ?
Author: Waldek Grudzień
Date: Mon, 09 Mar 1998 06:44
Date: Mon, 09 Mar 1998 06:44
37 lines
1998 bytes
1998 bytes
On Fri, 6 Mar 1998, Piotr Piatkowski wrote:
> Waldek Grudzień wrote:
> >
> > Czy ktoś zna jakiś adres z przykładami klienta/Serwera TCP/IP w
> > PERL'u ? (oprócz tych z PERL manuala (pod))
>
> Nie wiem które przykłady masz na mysli, ale czy widziałes
>
> perldoc IO/Socket ?
>
> Bo przykłady tam umieszczone są już tak proste, że nie bardzo widzę
> potrzebę czegos prostszego...
Przykłady te (przynajmniej w wersji którą mam) pokazują tylko jak tworzyć
sockety (co właściwie wiedziałem już wcześniej). Kłopot mam w
pisaniu/czytaniu przez klienta/serwera. Próbowałem przerabić na
różne sposoby przykłady z perlmanuala (zawarte w attachmencie)(rozdział :
perlipc - Perl interprocess communication) do postaci :
klient->pisz(costam),
server->czytaj, server->analizuj, server->odpowiedź
...
ale niestety jak na razie bez sukcesu.
Jakby ktoś miał jakieś pomysły byłbym wdzięczny.
Pozdrawiam,
Waldek Grudzien
///////////////////////////////////////////
// http://www.uhc.lublin.pl/~waldekg/ //
// Lublin/Lubartow, Poland //
\\ University Health Care \\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Re: Przykłady klienta/serwera TCP/IP ?
Author: Piotr Piatkowski
Date: Mon, 09 Mar 1998 14:34
Date: Mon, 09 Mar 1998 14:34
24 lines
1630 bytes
1630 bytes
Waldek Grudzień wrote: > On Fri, 6 Mar 1998, Piotr Piatkowski wrote: > > Nie wiem które przykłady masz na mysli, ale czy widziałes > > perldoc IO/Socket ? > > Przykłady te (przynajmniej w wersji którą mam) pokazują tylko jak tworzyć > sockety (co właściwie wiedziałem już wcześniej). Zainstaluj sobie perla 5.004 i zobacz perldoc IO/Socket > Kłopot mam w > pisaniu/czytaniu przez klienta/serwera. A co do tego, wydaje mi się że problem jest klasyczny - zapominasz że samo wykonanie print nie wystarczy do wysłania danych - trzeba wczesniej jeszcze dla danego handle wyłączyć buforowanie. Czyli jeżeli SOCKET to handle do otwartego i podłączonego gniazdka, to zrób np. cos takiego: select SOCKET; $|=1; select stdout; Oczywiscie przyczyna problemów może być inna :-) -- Piotr Piatkowski, WEB Corporation Polska sp. z o.o.
Re: Przykłady klienta/serwera TCP/IP ?
Author: Waldek Grudzień
Date: Tue, 10 Mar 1998 07:38
Date: Tue, 10 Mar 1998 07:38
60 lines
3117 bytes
3117 bytes
On Mon, 9 Mar 1998, Piotr Piatkowski wrote:
> Waldek Grudzień wrote:
> > On Fri, 6 Mar 1998, Piotr Piatkowski wrote:
> > > Nie wiem które przykłady masz na mysli, ale czy widziałes
> > > perldoc IO/Socket ?
> >
> > Przykłady te (przynajmniej w wersji którą mam) pokazują tylko jak tworzyć
> > sockety (co właściwie wiedziałem już wcześniej).
>
> Zainstaluj sobie perla 5.004 i zobacz perldoc IO/Socket
Mam 5.004 (_04 nawet) i jedyne przykłady to jak wspomniałem tworzenie
socketów :
--------------------------------------------------------------------------
Examples:
$sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
PeerPort => 'http(80)',
Proto => 'tcp');
$sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');
$sock = IO::Socket::INET->new(Listen => 5,
LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'tcp');
$sock = IO::Socket::INET->new('127.0.0.1:25');
Koniec examples.
--------------------------------------------------------------------------
> > Kłopot mam w
> > pisaniu/czytaniu przez klienta/serwera.
>
> A co do tego, wydaje mi się że problem jest klasyczny - zapominasz że samo
> wykonanie print nie wystarczy do wysłania danych - trzeba wczesniej
> jeszcze dla danego handle wyłączyć buforowanie. Czyli jeżeli SOCKET to
> handle do otwartego i podłączonego gniazdka, to zrób np. cos takiego:
>
> select SOCKET; $|=1; select stdout;
Próbowałem i ten manewr...
> Oczywiscie przyczyna problemów może być inna :-)
Na to niestety wygląda.
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))
Pozdrawiam,
Waldek Grudzien
///////////////////////////////////////////
// http://www.uhc.lublin.pl/~waldekg/ //
// Lublin/Lubartow, Poland //
\\ University Health Care \\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Re: Przykłady klienta/serwera TCP/IP ?
Author: Stefan Batory
Date: Tue, 10 Mar 1998 17:03
Date: Tue, 10 Mar 1998 17:03
80 lines
2490 bytes
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 ;
}
}
Re: Przykłady klienta/serwera TCP/IP ?
Author: Piotr Piatkowski
Date: Tue, 10 Mar 1998 22:13
Date: Tue, 10 Mar 1998 22:13
10 lines
1167 bytes
1167 bytes
> > Zainstaluj sobie perla 5.004 i zobacz perldoc IO/Socket > > Mam 5.004 (_04 nawet) i jedyne przykłady to jak wspomniałem tworzenie > socketów : Oops, chyba jakies zaćmienie miałem... Przykłady klienta/serwera można znaleźć pod man perlipc. -- Piotr Piatkowski, WEB Corporation Polska sp. z o.o.
Re: Przykłady klienta/serwera TCP/IP - rozwiązanie ...
Author: Waldek Grudzień
Date: Thu, 12 Mar 1998 07:01
Date: Thu, 12 Mar 1998 07:01
32 lines
1823 bytes
1823 bytes
Wiem już co było bezpośrednim powodem moich kłopotów z niemożnością
czytania/pisania z klienta/serwera.
O ile konstrukcja :
while (defined ($line = <SOCK>)) {
print $line;
}
działa (czyta) poprawnie na kliencie, to próba odczytu tym sposobem przez
serwer po prostu go blokuje (ale dlaczego na razie jeszcze nie wiem).
Po stronie serwera użyłem konstrukcji
chop($line=<Client>);
$line=~s/\r$//;
while (defined $line) {
last if $line=~/^$/;
print "$line\n";
chop($line=<Client>);
}
która już go nie blokuje
Pozdrawiam,
Waldek Grudzien
///////////////////////////////////////////
// http://www.uhc.lublin.pl/~waldekg/ //
// Lublin/Lubartow, Poland //
\\ University Health Care \\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
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