状況(プロキシされたtcp接続と関係があります)のため、私は定期的にCLOSE_WAIT接続を終了します。通常、デバッグ中に私のブラウザが原因です。CLOSE_WAIT接続はソフトウェアを殺さずに終了します
トンネルは、これらのCLOSE_WAIT状態を検出できるPHPスクリプトによって起動されるため、エラーを表示し、そのポートを再利用しようとしません(「プログラムX」はビジー状態を維持しているため)。それは関連するプログラムを殺すのはかなり簡単ですが、私は再びセットアップするのに多くの時間がかかるので、したくないでしょう。
偽の「ACK」パケットを送信するこのperl scriptがあります。これにより、プログラムは接続が終了したとみなして接続を終了します。 PHPでこれを実現する方法はあります:
my $packet = Net::RawIP->new({
ip => { frag_off => 0, tos => 0, saddr => $dst_ip, daddr => $src_ip},
tcp => { dest => $src_port, source => $dst_port, seq => 10, ack => 1}
});
$packet->send;
私が言ったように:私は、すべての詳細を持っている、それだけで、実際のパケット生成だと私は必要があるとそれを送信します。 PHPからperlスクリプトを外部から起動する必要はありません。