【发布时间】:2016-08-03 01:44:53
【问题描述】:
在一些用户的帮助下,我刚刚将 Indy 10 迁移到了 Delphi 5。我曾经使用过,
HTTP.DoRequest(hmPost,URL,ssSource,ssResult);//This will not disconnect if already connected like the post
由于 DoRequest 不再可用,如果我尝试使用此代码:
HTTP.Post(URL,ssSource,ssResult);
除非我尝试在 30 秒内再次发帖,否则它工作正常。如果我这样做了,我会收到此错误:
ERROR: Socket Error # 10048. Address already in use.
DoRequest 从来没有引起过这种情况。不知道如何正确更换。
【问题讨论】:
-
DoRequest()仍然存在,它只是protected。除非您尝试发送自定义 HTTP 命令,否则无需直接调用它。为避免Post()断开连接,请确保在HTTPOptions属性中启用hoKeepOrigProtocol标志。至于您的套接字错误,请提供Minimal, Complete and Verifiable example 演示该问题。 -
查看我的日志后,我认为问题在于所有发布都是在一个线程内完成的,我最多可以同时运行 3 个线程。线程 2 和 3 总是得到一个 Socket Error #10048。当线程 #1 完成时,它会很好地接收下一个帖子。使用 Indy 9 和 DoRequest()。
-
您是否尝试在所有线程中使用相同的
TIdHTTP对象,或者它们每个都有自己的TIdHTTP对象?你在使用BoundIP和/或BoundPort属性吗? -
感谢您的快速回复。甚至没有时间发布我的编辑。是的,我使用的是同一个 TidHTTp 对象。我正在使用 BoundPort,因为我认为这是 Indy 9 中 HTTP.Port 的替代品。我没有,从来没有使用过 BoundIP。