Thread Daemon mit IO::Socket abfragen - warten auf Antwort ? (1 answers)
Opened by gtrdriver at 2015-06-25 21:14

gtrdriver
 2015-06-25 21:14
#181430 #181430
User since
2012-09-16
11 articles
BenutzerIn
[default_avatar]
Hallo zusammen

ich gebe es zu ein Perl Freak bin ich nicht - aber wer nicht wagt der nicht gewinnt....

Was möchte ich tun:

Ich möchte einen daemon abfragen der eine Socket Verbindung bereit stellt.

Dabei werden kommandos abgesetzt und die Antwort soll ausgewertet werden.

Ich hab mir schon ein paar Code Schnipsel zusammengesucht und ich konnte schon 2 Befehle absetzen und die Antwort lesen - aktuell habe ich aber 2 Probleme:

1: Der Daemon benötigt teilweise mehrere Sekunden bis auf die Anfrage eie Antwort kommt weil im Hintergrund ein anderes BUS System abgefragt wird - wie bekomme ich es hin dass mit dem read gewartet wird bis daten kommen

2: In dem Code Beispiel wird offenbar die maximale Lesemenge begrenzt (2048) - wie erreiche ich dass immer alles was geliefert wird übernommen wird ?

Soweit bin ich aktuell:

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
use warnings;

my ($data,$length);

# flush after every write
$| = 1;

# creating object interface of IO::Socket::INET modules which internally creates
# socket, binds and connects to the TCP server running on the specific port.
my $socket = new IO::Socket::INET (
PeerHost => 'localhost',
PeerPort => '8888',
Proto => 'tcp',
Blocking => 0,
) or die "ERROR in Socket Creation : $!\n";

print "TCP Connection Success.\n\n";


# read the socket data sent by server.
....
#while(1)
# {
$data= "read -m 60 -c heatpump mode";...
$socket->send("$data\n");
sleep 5;
$socket->recv($data,2048);
print ("Received from Server : $data\n\n");
# }

$data= "read -m 60 -c heatpump mode2";..
$socket->send("$data\n");
sleep 5;
$socket->recv($data,2048);
print ("Received from Server : $data\n\n");


PS: Ohne die "sleep 5" geht das schief weil der Daemon zeit braucht - aber sleep ist ja auch keine Lösung ....

CU
GTR

View full thread Daemon mit IO::Socket abfragen - warten auf Antwort ?