Thread TCP Client - Socket lesen und schliessen (29 answers)
Opened by snarf at 2004-08-18 19:50

Reinhard
 2004-08-20 17:54
#37539 #37539
User since
2004-08-18
16 Artikel
BenutzerIn
[default_avatar]
Hallo Dirk, sk und steffenw
danke für Eure Hilfe und Informationen. Das mit select hört sich gut an, jedoch scheint es auf Windows nicht zu funktionieren (ich bekomme immer ein leeres Array zurück) oder ich hab es noch nicht verstanden. Auch den Socket auf non-blocking zu stellen, löst nicht mein Schleifenproblem.
Mein jetziger COde sieht so aus
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
37
38
39
40
41
42
use strict;
use Config;
use IO::Socket::INET;
use IO::Select;

my $SocketHandle;
my $buf;
my $binFile  = "<e:/test.bin";
my $Status;
my $SelHandle;
my @Readable;

unless (@ARGV == 2) { die "Usage: GetStatus.pl remotehostname port" }

$SocketHandle = IO::Socket::INET->new(PeerAddr =>  $ARGV[0],
                                     PeerPort =>  $ARGV[1],
                                     Proto    =>  "tcp",
                                     Timeout  =>  10,
                                     Type     =>  SOCK_STREAM) or die "cannot connect: $!\n";
$SocketHandle->autoflush(1);
$SocketHandle->blocking(0);

open(FileHandle, $binFile)or die "cannot open file: $!\n";
binmode(FileHandle);

while (read(FileHandle, $buf, 28))
{
   $SocketHandle->send($buf);
}

$|=1;

$SelHandle = IO::Select->new($SocketHandle);

while (@Readable = $SelHandle->can_read)
{
$SocketHandle->recv($Status,1);
print($Status);
}

close FileHandle;
close $SocketHandle;


Danke
Reinhard

View full thread TCP Client - Socket lesen und schliessen