#!/usr/bin/perl -w # Author: Christian Bichinger # Frankensteined from various sources. # # Simple perl only onkyo TCP/IP example (tested with Onkyo TX-NR808) # # This small example is mostly usable if you want to write your own # stuff. If you want an end-user application try "onkyocontrol" use strict; use IO::Socket; my $cmd = "DIF02"; my $host = "onkyo"; my $port = 60128; my ($iscpstr, $length, $rawlength, $rawcmd); my $iaddr = inet_aton($host) || die "no such host: $host"; my $paddr = sockaddr_in($port, $iaddr); my $proto = getprotobyname('tcp'); socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; connect(SOCK, $paddr) || die "connect: $!"; $rawcmd = "!1${cmd}"; $rawlength = chr(length($rawcmd)+1); $iscpstr = "ISCP\x00\x00\x00\x10\x00\x00\x00" . $rawlength . "\x01\x00\x00\x00" . $rawcmd . "\x0d"; send SOCK, "$iscpstr\n",0; my $line=''; my $output=''; $/= "\x1a\x0d\x0a" ; while ($output ne $cmd) { chomp($line = ); $output=substr($line, 18); print "$output\n"; } close(SOCK);