Sockety
Martin Caslavsky
mcaslavsky na macroware.cz
Pondělí Leden 10 23:14:28 MET 2000
Dobry den,
zkousel jsem si hrani se sockety podle Programovani v perl pro pokrocile,
kde je takovyhle server
use IO::Socket;
$sock = new IO::Socket::INET("LocalHost" => "localhost", LocalPort => 5000,
Proto => "tcp", Listen => 5, Reuse => 1)
or die "Cant create socket: $!\n";
while ($new_sock = $sock->accept()) {
while(defined ($buf = <$new_sock>) and ($buf !~ /QUIT/)) {
print $buf;
}
}
close $sock;
a takovyhle klient:
use IO::Socket;
$sock = new IO::Socket::INET(PeerAdr => "localhost", PeerPort => 5000, Proto
=> "tcp")
or die "Cant create socket: $!\n";
foreach (1..10) {
print $sock "Zprava $_\n";
$sock->flush();
}
close $sock;
Problem je ten, ze mi klient vubec nejde spustit, napise "Cant create
socket: Bad file descriptor".
Server naopak slape pekne, kdyz se k nemu pripojim telnetem. Jsem ale trosku
na rozpacich, protoze kdyz do okna s klientem napisu QUIT, tak nenapise nic
jako "Connection closed by foregin host", jenom se text vepisovany do okna
klienta prestane zobrazovat v okne serveru a ta hlaska, co bych chtel
slyset, se mi objevi, az kdyz na serveru dam ctrl+c. Je to takhle v poradku,
ze close $sock klienta neodpoji? Da se klient nejak "natvrdo" odpojit? (krom
vytahnuti kablu :)))
Martin Caslavsky
Další informace o konferenci Perl