perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 16
Click for quality!




12.02.2012 / 02:36

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragUngebrauchte Sockets schliessen
Seitenanfang
Hallo Zusammen

Ich habe mir einen kleinen TCP Server und einen Client dazu geschrieben:

Client


sub connect
{
use IO::Socket::SSL;
$IO::Socket::SSL::DEBUG = 1;

$host = $_[1];
$port = $_[2];
$cmd = $_[3];

$connection = IO::Socket::SSL->new(PeerAddr =>$host,
PeerPort =>$port,
ReusePort => 1);

if (defined $connection)
{
print $connection $cmd;
$connection->shutdown(1);
@answ = <$connection>;
} else
{
print "some troubles with connection: $!\n" ;
}
foreach $line (@answ)
{
print $line;
}
}

Server


$server = IO::Socket::SSL->new(LocalPort => $listen_port,
Proto => 'tcp',
Listen => 5,
SSL_cipher_list => '3DES') or die "Konnte kein TCP-Server an port 10001 werden: $!\n";

while ($client = $server->accept())
{
$client_ip = $client->peerhost();
# $rem_name = gethostbyaddr($client_ip, 0);
&logmsg (1, "Connection from $client_ip");
$cmd=<$client>;
# chop $cmd;
&logmsg (1, "Receive complete, Executing($cmd)");
open (CMD, "$cmd|") or &logmsg(2, "*** open of Command faild ($cmd)");
@output = <CMD>;

print $client @output;


&logmsg (1, "Execution complete! Closing connection");
$client->shutdown(2);
&logmsg (1, "_______________________________________________________");
}

was mich ärgert...
Das ganze funktioniert nicht immer. Wenns nicht geht erhalte ich folgenden Error:

IO::Socket::INET configuration failed
at gamecom.pm line 12

eine sekunde später, gehts dann aber schonwieder. Ich hab dann einfach mal, frech wie ich bin, die hypotese aufgestellt, dass das socket noch belegt ist. Mit netstat hab ich dann herausgefunden, dass das jedesmal ein neues socket eröffnet wird. Was ich aber nicht will, da das ganze mal in einem webclient integriert wird. Dann hätte ich ja auf einaml tausende von den dingern....

also ganz einfach gefragt, wie verhindere ich, dass es jedesmal eine neu solche zeile in netstat gibt ?

tcp 0 0 127.0.0.1:44675 127.0.0.1:20001 TIME_WAIT - timewait (59,02/0/0)

Datum: 19.09.2005-20:28

-






-
-