CLOSE_WAIT连接终止而不会杀死软件

时间:2017-06-16 13:43:49

标签: php networking tcp

由于情况(与代理的tcp连接有关),我经常以CLOSE_WAIT连接结束。通常在调试期间由我的浏览器引起。

隧道由PHP脚本启动,该脚本可以检测这些CLOSE_WAIT状态,因此它可以显示错误而不是尝试重用该端口(因为"程序X"保持忙碌)。杀死相关程序相当容易,但我不愿意再花费很多时间来重新设置。

perl script发送假的" ACK" -packets,因此程序会在假设终止时关闭连接。有没有办法在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脚本。

1 个答案:

答案 0 :(得分:0)

可以将create_socket()与SOCK_RAW一起使用。

但是,标头(IP / TCP)的设置必须是原始数据。这很难。

PRNL(PHP Raw Network Library)可以让您更轻松。