Schrift
[thread]4459[/thread]

Keine Warteschleife bei Socket-Server: Socket soll Clients ablehnen



<< >> 3 Einträge, 1 Seite
no1gizmo
 2007-04-12 16:46
#37494 #37494
User since
2007-02-20
21 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich hatte vor ein paar Monaten mal einen Socket-Server geschrieben. Dieser nimmt Clients an, immer nur einen zur Zeit (ok), wenn sich weitere verbinden, werden die gehalten, bis der aktuelle Client die verbindung trennt und der nächste Client nachrückt.

Nun soll aber jeder Client abgelehnt werden, anstatt in der Warteschleife gehalten zu werden, wenn der Server gerade an einem anderem Client hängt.

Das hier ist der Server (der maßgebliche Teil davon):
#!/usr/bin/perl

# Socket Server

use IO::Socket;
use lib "/home/u033389/modules";
use pt;
use show;

my $intern_path = "/home/u033389/public_html/clientfiles/";
my $intern_faxImage_path_src = "/var/spool/capifax/doneq/";
my $intern_faxImage_path_aim = "/home/u033389/public_html/clientfiles/faximages/";
my $extern_path = "http://10.131.19.11/~u033389/clientfiles/";
my $extern_image_path = "http://10.131.19.11/~u033389/clientfiles/faximages/";

my $a_clientname = "client"; # "alphabetic clientname" es kommt noch eine ID hinzu
my $id = 0; # die ID fuer den Clientnamen
my $extension = ".xml";

my $client = 0; # Stellvertreter für einen Client

my $server_socket = new IO::Socket::INET (

LocalPort => 9001,

Listen => $SOMAXCONN,

Proto => 'tcp',

Reuse => 1)
|| die "$!\n";

print "\nWartend....\n";

&read();

$server_socket->close();
print "\nSocket geschlossen, bye\n";


Wenn ich "Listen" nicht als Parameter angebe, dann funktioniert der Server nicht.

Ich glaube, ich brauch nur nen Tipp...[B]\n\n

<!--EDIT|renee|1176384222-->
murphy
 2007-04-12 17:47
#37495 #37495
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Versuche doch mal, die Länge der Warteschlange für ankommende Verbindungen zu beschränken. Also zum Beispiel Listen => 1 statt Listen => $SOMAXCONN.
When C++ is your hammer, every problem looks like your thumb.
no1gizmo
 2007-04-19 17:05
#37496 #37496
User since
2007-02-20
21 Artikel
BenutzerIn
[Homepage] [default_avatar]
hi und danke für die Antwort.

ich habe Listen bereits auf 0, 1 und -1 eingesetzt, aber das perlscript reagiert genauso wie bei $somxconn. Also ein client kann sich verbinden und anfragen senden, die auch vom server aktiv beantwortet werden, zur gleichen Zeit verbindende Clients werden auch angenommen, können aber so lange nicht aktiv vom server beantwortet werden, bis der Client, der vor dem wartenden Client ist, nachgerückt ist.

hm...
<< >> 3 Einträge, 1 Seite



View all threads created 2007-04-12 16:46.