Ticket #6900: test.pl

File test.pl, 1.7 KB (added by kilmarnock@…, 6 years ago)

tests the select statement for a IO:INET:Socket

Line 
1#! /usr/bin/perl -w
2# Create the receiving socket
3sub CUL_SimpleWrite(@);
4sub CUL_SimpleRead($);
5sub CUL_ReadAnswer($$$);
6
7my ($hash) = @_;
8
9
10use IO::Socket;
11my $hostname = shift || 'localhost';
12my $port = shift || 27073;
13
14my $socket = new IO::Socket::INET (
15   PeerAddr => $hostname, PeerPort => $port,
16   Type => SOCK_STREAM,
17);
18
19die "Could not create socket: $!\n" unless $socket;
20
21
22
23$hash->{TCPDev} = $socket;
24$hash->{FD} = $socket->fileno();
25
26 
27my $err;
28my $msg = undef;
29my $ver = "";
30CUL_SimpleWrite($hash, "V\n");
31($err, $ver) = CUL_ReadAnswer($hash, "Version", .1);
32
33print ("version: $ver\nfehler: $err\n");
34
35########################
36sub
37CUL_SimpleWrite(@)
38{
39  my ($hash, $msg, $nonl) = @_;
40  return if(!$hash);
41
42  syswrite($hash->{TCPDev}, $msg)  ;
43  select(undef, undef, undef, 0.001);
44#  print ('simple write end');
45}
46
47########################
48sub
49CUL_ReadAnswer($$$)
50{
51  my ($hash, $arg, $anydata) = @_;
52  my $type = $hash->{TYPE};
53
54 
55  my ($mculdata, $rin) = ("", '');
56  my $buf;
57  my $to = 3;                                         # 3 seconds timeout
58  #$to = $hash->{RA_Timeout} if($hash->{RA_Timeout});  # ...or less
59  for(;;) {
60    vec($rin, $hash->{FD}, 1) = 1;
61 
62     my $nfound = select($rin, undef, undef, $to);
63     print("nfound: $nfound\n");
64     $buf = CUL_SimpleRead($hash);
65     return ("No data", undef) if(!defined($buf));
66 
67    if($buf) {
68      print( "CUL/RAW (ReadAnswer): $buf\n");
69      $mculdata .= $buf;
70    }
71    return ('Kein Fehler', $mculdata) if($mculdata =~ m/\r\n/ || $anydata);     
72   }
73}
74
75########################
76sub
77CUL_SimpleRead($)
78{
79  my ($hash) = @_;
80
81
82
83    my $buf;
84    if(!defined(sysread($hash->{TCPDev}, $buf, 256))) {
85      CUL_Disconnected();
86      return undef;
87    }
88
89    return $buf;
90}
91
92########################