【发布时间】:2017-11-19 07:47:26
【问题描述】:
由于情况(与代理 tcp 连接有关),我经常以 CLOSE_WAIT 连接结束。通常是我的浏览器在调试时引起的。
隧道由 PHP 脚本启动,该脚本可以检测到这些 CLOSE_WAIT 状态,因此它可以显示错误并且不尝试重用该端口(因为“程序 X”使其忙碌)。杀死相关程序相当容易,但我不希望这样做,因为重新设置需要很长时间。
有这个perl script 发送虚假的“ACK”包,因此程序会在连接终止的情况下关闭连接。有什么方法可以在 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 脚本。
【问题讨论】:
标签: php networking tcp