我可以从Delphi的Indy客户端发送TCP RST吗?

时间:2011-08-31 13:43:33

标签: php delphi tcp indy

我们一直在尝试使用带有mod_php的Delphi Indy(SVN trunk)客户端和Apache。调用PHP脚本来注册关闭函数。

在测试期间,只有在脚本结束并且connection_status()返回零时才会调用此关闭函数。

如果我在脚本执行期间使用CURL并按Ctrl-C,则CURL会发送一个TCP数据包,其RST标志设置为布尔值true。这会触发关闭功能,connection_status()会返回一个。如果连接超时,则打开TCP FIN标志,但关闭函数不会触发 - 事实上,Apache进程进入CLOSE_WAIT直到PHP脚本执行完毕。如果我使用Indy,唯一设置的标志是FIN。

考虑到所有这些,我们可以让Indy发送一个RST标志设置为true的TCP数据包吗?我们希望在连接超时(解决我们正在测试的问题)时执行此操作。

另见http://uk.php.net/connection_handling

1 个答案:

答案 0 :(得分:0)

Indy总是尝试优雅地关闭连接,这不会发送RST标志。如果您需要,您必须自己强行关闭连接。