tr0nix
der-mit-dem-tux-tanzt
Hallo zusammen
Ich bastle ein bisschen mit einer Client/Server Applikation rum die ich zum ausprobieren baue. Dabei habe ich folgendes Problem: Wenn ein Client auf den Server connected, forkt der Server einen Subprozess. Bei einem zweiten Client ein zweiter Subprozess etc. pp.
Jetzt soll es möglich sein, von einem Client an den Server eine Information zu senden, welche der Server verarbeiten und ggf. an andere Clients weiterschicken kann.
Also wie bei einem IRC-Clienten:
Client --- schreibt Nachricht ---> Server
Server -- promoted Nachricht --> Alle Clients
Was für Lösungen gibts da mit IPC? Ich probierte zu forken mittels open(file, "|-"); was auch funktionierte, nur müsste ich dann irgendwie einen Filedescriptor für jeden Clienten öffnen können was ich nicht hingekriegt habe.
Grüsse
Joel
P.S. wenn ihr Sourcen wollt kein Problem
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
Ach die Frage wird ja eh kommen :
Ich bastle ein bisschen mit einer Client/Server Applikation rum die ich zum ausprobieren baue. Dabei habe ich folgendes Problem: Wenn ein Client auf den Server connected, forkt der Server einen Subprozess. Bei einem zweiten Client ein zweiter Subprozess etc. pp.
Jetzt soll es möglich sein, von einem Client an den Server eine Information zu senden, welche der Server verarbeiten und ggf. an andere Clients weiterschicken kann.
Also wie bei einem IRC-Clienten:
Client --- schreibt Nachricht ---> Server
Server -- promoted Nachricht --> Alle Clients
Was für Lösungen gibts da mit IPC? Ich probierte zu forken mittels open(file, "|-"); was auch funktionierte, nur müsste ich dann irgendwie einen Filedescriptor für jeden Clienten öffnen können was ich nicht hingekriegt habe.
Grüsse
Joel
P.S. wenn ihr Sourcen wollt kein Problem
.
.
.
EDIT (autom. Beitragszusammenführung) :
.
Ach die Frage wird ja eh kommen :
Code:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
my $socket = new IO::Socket::INET(LocalHost=>'localhost',LocalPort=>6666,Proto=>'tcp',Listen=>SOMAXCONN,Reuse=>1);
my($clientservant, $pid, $buf, $counter);
while($clientservant = $socket->accept()) {
$counter++;
next if $pid = open(subClient, "|-");
print "Verbindung $counter offen!\n";
while (defined($buf = <$clientservant>)) {
print $clientservant uc $buf;
}
} continue {
unless($pid) {
print "Verbindung $counter wird geschlossen..\n";
close subClient;
close $clientservant;
}
}
Zuletzt bearbeitet: