निम्नलिखित कोड के साथ मैं एक IPv4 वेबसाइट की सामग्री प्राप्त कर सकते हैं:IPv4 + IPv6 का समर्थन करने के लिए इंडी v10 को कॉन्फ़िगर कैसे करें?
uses
IdHttp;
IdHttp1 := TIdHttp.Create(nil);
try
Result := IdHttp1.Get('http://www.heise.de/')
finally
IdHttp1.Free;
end;
लेकिन जब मैं एक IPv6 वेबसाइट से कनेक्ट करने की कोशिश मैं सॉकेट त्रुटि # 11004 मिलती है:
IdHttp1 := TIdHttp.Create(nil);
try
Result := IdHttp1.Get('http://www.six.heise.de/')
finally
IdHttp1.Free;
end;
मैं पिंग कर सकते हैं www.six.heise.de बस ठीक है (आईपी 2 ए 02: 2e0: 3fe: 100 :: 6 :) और फ़ायरफ़ॉक्स बिना किसी समस्या के वेबसाइट प्रदर्शित करता है।
आईपीवी 4 और आईपीवी 6 वेबसाइटों से कनेक्ट करने के लिए मुझे इंडी (एसवीएन से नवीनतम वी 10 बिल्ड) में बदलने की क्या ज़रूरत है?
यह काम करता है, लेकिन है एक नहीं बल्कि अजीब समाधान, एक वेब ब्राउज़र http स्वीकार नहीं करते: // [www .six.heise.de] /। क्या कोई वेबसाइट आईपीवी 4 या आईपीवी 6 है या नहीं, और आईपीवी 6 के मामले में यूआरएल में ब्रैकेट जोड़ना है? – Casady
यूआरएल में इस्तेमाल किए गए आईपीवी 6 पते को ब्रैकेट किया जाना चाहिए, प्रति [आरएफसी 2732] (http://tools.ietf.org/html/rfc2732)। होस्टनाम नहीं करते हैं, लेकिन वर्तमान में आईपीवी 4 बनाम आईपीवी 6 का उपयोग करने के लिए समय से पहले जानने के लिए 'TIdHTTP' का कोई अन्य साधन नहीं है। जब कोई वेबब्रोसर किसी URL से कनेक्ट होता है, तो यह होस्ट के नाम को DNS के माध्यम से अपने उपलब्ध आईपीवी 4/आईपीवी 6 पते प्राप्त करने के लिए हल करता है और फिर एक सफल होने तक उनसे कनेक्ट करने का प्रयास करता है। 'TIdTCPClient' 'IPVersion' सेट होने के बाद होस्टनाम को हल करता है और एक आईपीवी 4/आईपीवी 6 सॉकेट बनाया गया है। यह एकाधिक आईपी से कनेक्ट करने का प्रयास नहीं करता है। भविष्य में इसे बदलना पड़ सकता है। –
अभी के लिए, आप 'TIdHNSResolver' का उपयोग मेजबाननाम के मैन्युअल DNS लुकअप करने के लिए पहले उचित प्रारूपित URL के साथ' TIdHTTP' का उपयोग कर सकते हैं। –