携帯・ビジネスブログ・CGIスクリプト-Perlでsocketを利用した通信のタイムアウトを設定する。

トップperl scripts> Perlでsocketのタイムアウト

Perlでsocketのタイムアウト

Perlでsocketを利用した通信のタイムアウトを設定する。


eval {
  local $SIG{'ALRM'} = sub { die 'connection timeout...' };
  alarm 10;

  my $ip = inet_aton($host)
      || return ( -1, "non exist $host" );

  my $sock_addr = pack_sockaddr_in($port, $ip);

  socket(SOCKET, PF_INET, SOCK_STREAM, 0)
      || return ( -1, "cannot create socket" );

  connect(SOCKET, $sock_addr)
      || return ( -1, "cannot connect $sock_addr" );

  select(SOCKET);
  $|=1;
  select(STDOUT);

  print SOCKET "$send_string";
  close SOCKET;

  alarm 0;
};

alarm 0;

if( $@ ) {
  unlink $lock;
}

related articles