Article View: es.comp.os.linux.programacion
Article #14031Re: Servidor TCP en Perl
From: Dani Pardo
Date: Thu, 21 Dec 2000 09:42
Date: Thu, 21 Dec 2000 09:42
83 lines
3266 bytes
3266 bytes
"Jos� Luis P�rez Diez" wrote:
>
> In article <3A3F25B5.936991B3@enpl.es>, Dani Pardo wrote:
> > Tengo un servidor TCP en perl, que hace de "echo" de lo que le envias.
> > La cosa funciona bien si hay una sola conexi�n, pero si hay 2
> > conexiones concurrentes, la segunda se queda esperando a que finalize la
> > primera.
> > En principio esto no es problema por el problema que tengo que
> > resolver. El caso es que si la primera conexi�n se queda en CLOSE_WAIT o
> > algo asi, los dem�s clientes no pueden hacer nada, y es como si el
> > servicio estuviese inactivo.
> > C�mo podria modificar el programa para que sirviese m�ltiples
> > conexiones a la vez?
> >
>
> haz proceso hijo con fork por ejeplo para cada nueva conexion entrante una cosa
> asi
> #!/usr/bin/perl
Ok, gracias, al final tengo esto (usando IO::Socket):
--------------------------------------------------------------------
#!/usr/bin/perl -w
#use strict;
use IO::Socket;
my $dades;
my ($client,$server); # Els socket handles
my $LlistaClients;
$server= IO::Socket::INET->new(LocalPort => 4114,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 10) or die "No puc obrir socket al port
4114\n";
print "Escoltant al port 4114...\n";
while($client=$server->accept())
{
# Afegim $client a la @LlistaClients
if ($pid=fork())
{
# Parent
close($client);
}
else
{
# Child
while($client->recv($dades_rebudes,20))
{
if($dades_rebudes=~/quit/i)
{
#shutdown($client,2);
$client->close();
exit(0);
}
else
{
printf("%s\n",$dades_rebudes);
$client->send($dades_rebudes);
}
}
}
}
------
Lo que he visto, es que el servidor queda con el socket en TIME_WAIT...
y no s� si eso es malo (creo que no). Cuando se acaban los datos a
enviar/recibir, tanto el padre como el hijo han hecho close() del
socket.. as� que no s� si deberia quedar en TIME_WAIT..
Bueno, gracias por la info. :)
---
Dani Pardo, dani@enpl.es
Enplater s.a
Technical Details
Message-ID:
<3A41D083.3F0A61D9@enpl.es>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.skycache.com!Cidera!newsfeed.comtenidos.com!m2newsfeed.uni2.es!lola!lola.ctv.es!calix.enpl.es!nobodyReferences:
<3A3F25B5.936991B3@enpl.es> <VA.00000141.00440303@noemai.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,cd63928546b03ad0 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2000-12-21 04:34:15 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.skycache.com!Cidera!newsfeed.comtenidos.com!m2newsfeed.uni2.es!lola!lola.ctv.es!calix.enpl.es!nobody From: Dani Pardo <dani@enpl.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Servidor TCP en Perl Date: Thu, 21 Dec 2000 10:42:27 +0100 Organization: CTV/JET Lines: 83 Message-ID: <3A41D083.3F0A61D9@enpl.es> References: <3A3F25B5.936991B3@enpl.es> <VA.00000141.00440303@noemai.com> NNTP-Posting-Host: ctv21225138066.ctv.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: lola.ctv.es 977401774 4673 212.25.138.66 (21 Dec 2000 12:29:34 GMT) X-Complaints-To: usenet@lola.ctv.es NNTP-Posting-Date: 21 Dec 2000 12:29:34 GMT To: Jluis@noEmai.com X-Mailer: Mozilla 4.61 [en] (Win98; I) X-Accept-Language: en