9 delphi multithreading http indy
我正在使用Delphi 2006和Indy 10.我创建了一个表单并下载了一个IdHttpServer组件.我为表单设置OnCreate事件以将服务器设置为活动状态,然后为服务器的OnCommandGet输入以下行:
procedure TForm3.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
Beep;
Sleep(10000);
AResponseInfo.ContentText := DateTimeToStr(Now);
end;
Run Code Online (Sandbox Code Playgroud)
注意睡眠10秒钟.
然后我用Firefox测试,使用2个浏览器.我有第一个连接到"localhost",我立刻听到一声哔哔声.然后我选择第二个浏览器,并将其连接到localhost(在不到10秒的时间内),但它不会立即发出哔声.它等待第一个请求完成,然后发出蜂鸣声,并等待另一个10秒.
我以为这些组件是多线程的?是否有一些我可以设置的属性使其表现得像我想象的那样(两个请求都会得到立即回答).
ulr*_*chb 11
不是Indy,并且TIdHTTPServer对这种行为负责!这是webbrowser!
Firefox在同一服务器上共享不同请求的TCP连接.
因此,Firefox序列化了对同一URI的2个请求.同时打开2个不同的浏览器(例如IE和Firefox),同时请求http://localhost/两者,您将获得预期的结果.
以及你问题的答案:是的,当然,每个TIdHTTPServer.OnCommandGet事件都在一个自己的"调度程序"线程中执行,并且可以同时执行.
| 归档时间: |
|
| 查看次数: |
5288 次 |
| 最近记录: |