Autoflush

Honza Pazdziora adelton na informatics.muni.cz
Čtvrtek Červen 20 17:27:48 MEST 2002


On Thu, Jun 20, 2002 at 05:18:07PM +0200, Antonin 'Tonino' Kmoch wrote:
> 
>    pouzivam komunikaci mezi serverem a klientem za pomoci
> IO::Socket. Prestoze nastavim autoflush(1) nebo dokonce zavolam i metodu
> flush, posledni radek se neodesle (jedine, kdyz na jeho konec pridam "\n",
> coz nechci).
> 
> --
> Cast kodu serveru vypada nasledovne:
> my $listen = IO::Socket::INET->new('LocalPort' => $port,
>         'Listen' => 20, 'Proto' => 'tcp', 'Reuse' => 1);
> if (my $connect = $listen->accept) {
>    $connect->autoflush(1);
>    print $connect "Toto se odesle\n";
>    print $connect "Toto ne";
>    .
>    .

Na 5.004_04 s IO::Socket 1.25 (napriklad erinky) toto funguje. 
Testovano pomoci

use IO::Socket;
my $port = 5757;
my $listen = IO::Socket::INET->new('LocalPort' => $port,
        'Listen' => 20, 'Proto' => 'tcp', 'Reuse' => 1);
if (my $connect = $listen->accept) {
   $connect->autoflush(1);
   print $connect "Toto se odesle\n";
   print $connect "Toto ne";
        sleep 5;
}
__END__

a telnet localhost 5757 ve druhem okne -- vidim 

Escape character is '^]'.
Toto se odesle
Toto ne

pak ceka tech 5 sekund a pak teprve dostanu Connection closed by
foreign host.

Navic manova stranka rika

	As of VERSION 1.18 all IO::Socket objects have autoflush turned on
	by default. This was not the case with earlier releases.

cili neni treba nic nastavovat.

Takze bych si tipnul, ze problem neni v tom, ze by tento kod neposlal,
ale naopak ze druha strana pri cteni ceka az na ten newline.

Cili: jak to testujete Vy?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
      ... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------


Další informace o konferenci Perl