#!/usr/bin/perl use strict; use warnings; use IO::Socket; use Sys::Hostname; use vars qw( $RUNNING ); ###################################### sub TermHandle; ###################################### ###################################### sub TermHandle { $SIG{INT} = sub { exit 0; }; $RUNNING = 0; } ###################################### ###################################### my $broadcast_address = "192.168.1.255"; my $tivo_port = 2190; my $BeaconInterval = 2; my $socket; my $dest; my $hostname; my $data; # Signal Handler TermHandle(); $hostname = Sys::Hostname::hostname; $data = "tivoconnect=1\n" . "swversion=beta1\n" . "method=broadcast\n" . "identity=$hostname\n" . "machine=$hostname\n" . "platform=pc/linux\n" . "services=TiVoMediaServer:80/http\n"; $RUNNING = 1; # Let's create an UDP socket and set it up for broadcast $socket = IO::Socket::INET->new(Proto => 'udp') or die $@; $socket->sockopt(SO_BROADCAST() => 1) or die "sockopt: $!"; $dest = sockaddr_in($tivo_port, inet_aton($broadcast_address)); while ($RUNNING) { my $sendret = send ($socket, $data, 0, $dest); print "Broadcast Error: $!\n" unless ($sendret); sleep $BeaconInterval; } close $socket; print "Beacon finished.\n";