Ich habe für Onkyo-Receiver das bestehene Script umgeschrieben, daß es nun socat benutzt.
Es funktioniert grundsätzlich, allerdings gestaltet sich das Debuggen schwierig, da nach Abbruch des Scripts / socat man in Zustände gelangt, wo es nicht mehr funktioniert:
Je nachdem kann sich das Script nicht mehr verbinden, es wird nichts mehr vom Receiver empfangen, socat beendet sich, ...
Sicher aber langwierig ist ein Neustart des WG - auf Dauer nervt das ...
Ich verwende folgenden Code
und folgenden socat Aufruf:
1. Wenn ich nun socat neustarten möchte/muß, müßte man das im Script entsprechend behandeln? Z.B. Zurücksetzen von $socket[$socknum], erneutes plugin_socket_subscribe, wiregated.pl neustarten, ...?
2. Wenn mein Script abstürtzt, wie muß ich das handhaben?
3. Kann man den Status der Verbindung im Script abfragen und entsprechend behandeln?
4. Gibt es sinnvolle Optionen, die man socat noch mitgeben sollte? (Ich bin da nicht fit)
5. Gibt es vielleicht ein Referenzbeispiel, was ich noch nicht gefunden habe?
Grüße, Manuel
Es funktioniert grundsätzlich, allerdings gestaltet sich das Debuggen schwierig, da nach Abbruch des Scripts / socat man in Zustände gelangt, wo es nicht mehr funktioniert:
Je nachdem kann sich das Script nicht mehr verbinden, es wird nichts mehr vom Receiver empfangen, socat beendet sich, ...
Sicher aber langwierig ist ein Neustart des WG - auf Dauer nervt das ...
Ich verwende folgenden Code
Code:
if (!$socket[$socknum]) { # socket erstellen $socket[$socknum] = IO::Socket::INET->new( Proto => "tcp", PeerPort => 60127, PeerAddr => localhost, ReuseAddr => 1 ) or return ("open of $recv_ip : $recv_port failed: $!"); $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin return "opened Socket $socknum"; } ... syswrite($socket[$socknum], $mycommand);
Code:
socat -v -d -d -d tcp-listen:60127,bind=localhost,reuseaddr,cr tcp-connect:192.168.188.27:60128
2. Wenn mein Script abstürtzt, wie muß ich das handhaben?
3. Kann man den Status der Verbindung im Script abfragen und entsprechend behandeln?
4. Gibt es sinnvolle Optionen, die man socat noch mitgeben sollte? (Ich bin da nicht fit)
5. Gibt es vielleicht ein Referenzbeispiel, was ich noch nicht gefunden habe?
Grüße, Manuel
Kommentar