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