Schrift
[thread]4317[/thread]

IO::SELECT+ IO::Socket

Leser: 2


<< >> 5 Einträge, 1 Seite
esskar
 2005-03-13 17:12
#37863 #37863
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
benutz mal bitte use strict;
dann findest du auch all deine Fehler!
pKai
 2005-03-14 15:49
#37864 #37864
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Wenn du die Clients, die was schicken, unterscheiden möchtest, kannst du dafür einen HashOfHash nehmen mit $fh als Schlüsel auf der obersten Ebene, und in der 2. Ebene speicherst du dann die Adresse, eine laufende Nummer, was du dir halt zu der Verbindung merken möchtest.
Oder habe ich dich jetzt komplett missverstanden?
I sense a soul in search of answers.
linux-freak-gf
 2005-03-13 16:45
#37865 #37865
User since
2004-03-01
2 Artikel
BenutzerIn
[default_avatar]
ich weiß das dieses thema schon oft da war aber ich habe dar immer noch ein prob:

Hier Code:
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
use IO::Socket;
use IO::Select;
my $s = new IO::Socket::INET (
LocalPort => '5800',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!\n" unless $s;
$read_set = new IO::Select();
$read_set->add($s);
while (1) {
my $rh_set = IO::Select->select($read_set, undef, undef, 0);
foreach $rh (@$rh_set) {
if ($rh == $s) {
$ns = $rh->accept();
$read_set->add($ns);
}
else {
$buf = <$rh>;
if($buf) {
print $buf;
}
else {
$read_set->remove($rh);
close($rh);
}
}
}
}

ist aus vielen sachen zusammengebastelt.
nur wenn ich ein verbindung herstelle mit dem windows telnet client, sagt er das es eine verbindung gibt aber wenn ich etwas schreibe kommt nichts aus dem perl-script raus.
wo liegt der fehler??
linux-freak-gf
 2005-03-13 23:10
#37866 #37866
User since
2004-03-01
2 Artikel
BenutzerIn
[default_avatar]
ich weiß jetzt zwar wie ich das script aus sehen muss hier der code
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
#!C:\perl\bin\perl
use IO::Select;
use IO::Socket;
my @data;
$lsn = new IO::Socket::INET(Listen => 1, LocalPort => 9900);
$sel = new IO::Select( $lsn );

while(@ready = $sel->can_read) {
foreach $fh (@ready) {
if($fh == $lsn) {
# Create a new socket
$new = $lsn->accept;
$sel->add($new);
$addr=$new->peerhost;
# push(@data,($addr,
print "New Connection from $addr!\n";
}
else {
$test=<$fh>;
if ($test) {
print $test;
} else {
$sel->remove($fh);
$fh->close;
}
}
}
}

aber wie kann ich die einzelnen handler wie aus $sel raus oder wie spreche ich sie an??
Crian
 2005-03-15 12:29
#37867 #37867
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Verwende bitte use strict. -> http://wiki.perl-community.de/bin/view/Wissensbasis/UseStrict
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2005-03-13 17:12.