मैं डेल्फी 2006 और इंडी 10 का उपयोग कर रहा हूं। मैं एक फॉर्म बनाता हूं और एक आईडीएचटीपी सर्वर घटक छोड़ देता हूं। मैं सर्वर सक्रिय सेट करने के लिए फार्म के लिए एक OnCreate घटना बनाने के लिए, और मैं सर्वर के OnCommandGet के लिए इन पंक्तियों दर्ज करें:डेल्फी/इंडी आईडीएचटीपी सर्वर बहुसंख्यक नहीं है?
procedure TForm3.IdHTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
Beep;
Sleep(10000);
AResponseInfo.ContentText := DateTimeToStr(Now);
end;
नोट 10 सेकंड के लिए सो जाओ।
मैं फिर 2 ब्राउज़र का उपयोग करके फ़ायरफ़ॉक्स के साथ परीक्षण करता हूं। मेरे पास पहला "लोकलहोस्ट" से कनेक्ट है, और मैं तुरंत एक बीप सुनता हूं। मैं फिर दूसरे ब्राउज़र पर टैब करता हूं, और इसे स्थानीयहोस्ट से कनेक्ट करता हूं (10 सेकंड से भी कम समय में), लेकिन यह तुरंत बीप नहीं करता है। यह पूरा करने के पहले अनुरोध के लिए इंतजार कर रहा है, फिर बीप, और एक और 10 सेकंड इंतजार कर रहा है।
मैंने सोचा कि ये घटक बहु-थ्रेडेड थे? क्या कोई ऐसी संपत्ति है जिसे मैं इसे जिस तरीके से सोचता हूं उससे व्यवहार करने के लिए सेट कर सकता हूं (दोनों अनुरोध तुरंत जवाब दिए जाएंगे)।
आप सामग्री जांच मूल्य के लिए प्रारूप ('% d% d', [MainThreadID, GetCurrentThreadID] को वापस कर एक ही थ्रेड पर चल रहे हैं या नहीं, यह जांच सकते हैं। यदि यह वास्तव में बहुप्रचारित है, तो प्रत्येक अनुरोध में आपको प्राप्त होने वाले दो मान एक-दूसरे से अलग होंगे, और दोनों प्रतिक्रियाओं के दूसरे मान शायद अलग होंगे। –
यदि मैं आपको एक विकल्प में रूचि दे सकता हूं: मैंने http://xxm.sourceforge.net/ को एक प्रोजेक्ट खोलने के लिए शुरू किया है जिस पर मैं काम कर रहा था, जिससे यह और इसी तरह की समस्याएं हल हो सकती हैं। मैंने अभी तक डेल्फी 2006 पर यह कोशिश नहीं की है, यह डेल्फी 7 पर आधारित है, लेकिन थोड़ी किस्मत के साथ इसे काम करना चाहिए। –