|
>>4218 seki 横からすみません. ftpのポート21でconnectできるかチェックするPerlスクリプトを 書いてみました.試していただけますか? use Socket; $SIG{'ALRM'} = sub { close(SOCK); $sTimeout='(timeout)'; }; # ConnectTest(IPアドレス,ポート,タイムアウト秒数) if (!&ConnectTest('192.168.x.x',21,5)){ print "cannot make a ftp connection.\n"; exit; } # 正常ならばftpコマンドを実行 system ('ftp hogehoge'); exit; sub ConnectTest { local($sIP,$nPort,$nTimeout)=@_; local($iaddr,$paddr,$flag,$protoTCP,$sTimeout); $iaddr = inet_aton($sIP) || die "no host: $sIP"; $protoTCP = getprotobyname('tcp'); $paddr = sockaddr_in($nPort, $iaddr); $flag=socket(SOCK, PF_INET, SOCK_STREAM, $protoTCP); if (!$flag){ goto J1_1; } $flag=0;$sTimeout=''; eval { alarm($nTimeout); $flag=connect(SOCK, $paddr); alarm(0); }; if (!$flag){ goto J1_1; } if ($sTimeout){ goto J1_1; } close (SOCK); return 1; J1_1: close (SOCK); return 0; } |
|
>>4218 seki > ftpのソースコードなどは開示されていないのでしょうか?? Solaris8 のソースは配られていたかどうかは忘れましたが、いずれにせよ ソース中には 4分という記載はありません (見てませんが)。connect(2) の タイムアウトを決めるのはカーネルの仕事です。 で、 http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.5 によると、 # ndd -set /dev/tcp tcp_ip_abort_cinterval 180000 で変更可能なようです。 > APLに手を入れる事なく設定変更で済ませれるのであれば済ませたいです プログラムに手を入れるよりもカーネルの設定を変える方がよいというのは 間違った判断だと思います。 まぁ客や上司の意向とか、ソース触ったら契約がどうこうとか、世の中には うっとうしいことがいろいろあるので別にいいですが。 >>4219 Netboy ウチの環境では動きました。 |