Thread IO::Select und Sockets (9 answers)
Opened by pq at 2003-11-29 15:07

mrtrashtalk
 2003-11-29 14:30
#38194 #38194
User since
2003-11-29
4 articles
BenutzerIn
[default_avatar]
Hallo erstmal, bin neu hier und hab natürlich auch gleich ein Problem.

Ich möchte ein Perl-Programm schreiben, dass Client und Server vereint. Dazu will ich checken ob die Eingabe von STDIN kommt(d.h der Client hat eine Anweisung bekommen), oder ob die Eingabe von einem Socket kommt(d.h der Server soll etwas mit der Verbingung machen). Leider steckt da irgendwo noch ein grober Fehler. Hier was ich bis jetzt hab:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use IO::Socket; 
use IO::Select;
$hname = "localhost";
$hport = $ARGV[0];

$sock = new IO::Socket::INET->new(LocalPort => $hport,
Listen => 10,
Reuse => 1,
Proto => 'tcp');
$sel = new IO::Select->new();
$sel->add($sock);
$sel->add(*STDIN);

die "*Could not Connect" unless $sock;
while(1){
while ($line = <STDIN>){
while(@ready = $sel->can_read) {
foreach $fh (@ready) {
if ($fh == $sock) {
$new = $sock->accept;
$sel->add($new);
print "Willkommen";
}

elsif($fh == *STDIN) {
$buf = <STDIN>;
print "Client\n";
client($buf);
}
else{
$sel->remove($fh);
$fh->close;
}
}
}
}


Hat irgendjemand eine Idee?

Also das Problem ist, das keinerlei Reaktion vom Programm kommt. Egal ob ich jetzt versuche eine Verbindung mit dem Socket aufzubauen oder einen Befehl eingebe.\n\n

<!--EDIT|mrtrashtalk|1070109349-->

View full thread IO::Select und Sockets