#!/usr/bin/perl use strict; use warnings; use utf8; use Socket; my $data = ""; # localhost以外での動作禁止 if ($ENV{SERVER_NAME} ne 'localhost'){ goto ERROR; } my $addr = inet_aton('localhost'); if (!$addr){ die; } my $sock_addr = pack_sockaddr_in(2947, $addr); socket(SOCK, PF_INET, SOCK_STREAM, 0) or goto ERROR; connect(SOCK, $sock_addr) or goto ERROR; select(SOCK); $| = 1; select(STDOUT); my $i; for ($i = 20; $i > 0; --$i){ # 2秒でタイムアウト print SOCK "dpav\n"; select(undef, undef, undef, 0.1); # 0.1秒待ち $data = ; if ($data !~ /\?/){ last; } } if (!$i){ # タイムアウト $data = ""; } ERROR: eval(close(SOCK)); if (!$data){ # エラー発生時は長岡駅 $data = "GPSD,D=2009-07-11T03:52:39.0Z,P=37.448 138.854,A=30.0,V=0.0"; } my $len = length($data); print "Content-Type: text/plain; Charset=UTF-8\r\n"; print "Content-Length: $len\r\n"; print "\r\n"; print $data; exit;