C++ ਵਿੱਚ CFNetwork ਪ੍ਰੌਕਸੀ ਨਤੀਜੇ ਸਿੱਧੇ ਪੜ੍ਹੋ
C++ ਤੋਂ Apple ਦੀਆਂ C ਪ੍ਰੌਕਸੀ ਲੁਕਅੱਪ APIਾਂ ਵਰਤੋ ਅਤੇ ਉਧਾਰ ਲਏ ਡਿਕਸ਼ਨਰੀ ਮੁੱਲਾਂ ਨੂੰ ਮਾਲਕੀ ਵਾਲੀਆਂ ਵਸਤੂਆਂ ਵਜੋਂ ਛੱਡੇ ਬਿਨਾਂ ਜੀਵਿਤ ਰੱਖੋ।
CFNetwork ਦੀ ਪ੍ਰੌਕਸੀ ਲੁਕਅੱਪ ਇੱਕ C API ਹੈ ਜੋ C++ ਤੋਂ ਸਿੱਧੀ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ; ਸਭ ਕੁਝ Objective-C ਵਸਤੂਆਂ ਵਿੱਚ ਬਦਲਣਾ ਚੋਣਵਾਂ ਹੈ। ਕ੍ਰਮਬੱਧ ਪ੍ਰੌਕਸੀ ਡਿਕਸ਼ਨਰੀਆਂ ਲੈਣ ਲਈ CFNetworkCopyProxiesForURL ਨੂੰ ਟਾਰਗਿਟ CFURL ਅਤੇ CFNetworkCopySystemProxySettings ਦੀਆਂ ਸੈਟਿੰਗਾਂ ਨਾਲ ਕਾਲ ਕਰੋ।
| ਮੁੱਲ | ਮਾਲਕੀ |
|---|---|
| Copy ਵੱਲੋਂ ਬਣਾਈਆਂ ਜਾਂ ਵਾਪਸ ਕੀਤੀਆਂ ਵਸਤੂਆਂ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਰੂਟ ਅਤੇ ਸੈਟਿੰਗਾਂ ਸ਼ਾਮਲ ਹਨ | ਕਾਲਰ ਦੀ ਮਾਲਕੀ; ਹਰ ਗੈਰ-ਨਲ ਮਾਲਕੀ ਵਾਲੀ ਵਸਤੂ ਛੱਡੋ |
| ਐਰੇ ਤੋਂ ਡਿਕਸ਼ਨਰੀ ਜਾਂ Get ਰਾਹੀਂ ਡਿਕਸ਼ਨਰੀ ਤੋਂ ਹੋਸਟਨਾਮ | ਉਧਾਰ ਲਿਆ; ਰੱਖੇ ਬਿਨਾਂ ਛੱਡੋ ਨਾ |
ਵੈਧ routes ਅਤੇ ਰੇਂਜ ਵਿੱਚਲੇ ਇੰਡੈਕਸ ਲਈ, ਕੱਢਣਾ ਇੰਝ ਹੋ ਸਕਦਾ ਹੈ:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
ਐਂਟਰੀ ਨੂੰ ਐਂਡਪੌਇੰਟ ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ kCFProxyTypeKey ਪੜ੍ਹੋ। ਸਿੱਧੇ ਅਤੇ ਸਵੈ-ਕਨਫਿਗਰੇਸ਼ਨ ਵਾਲੇ ਉਮੀਦਵਾਰਾਂ ਨੂੰ ਵੱਖਰੀ ਸੰਭਾਲ ਚਾਹੀਦੀ ਹੈ.
ਮਾਲਕ ਦੇ ਜੀਵਿਤ ਰਹਿੰਦਿਆਂ ਕਿਸੇ ਖਾਸ ਐਂਟਰੀ ਦਾ CFString ਹੋਸਟਨਾਮ ਅਤੇ CFNumber ਪੋਰਟ ਬਦਲੋ। ਕੱਢੇ ਗਏ C++ ਮੁੱਲ ਫਿਰ ਟ੍ਰਾਂਸਪੋਰਟ ਦੀ ਕਨਫਿਗਰੇਸ਼ਨ ਵਿੱਚ ਜਾ ਸਕਦੇ ਹਨ। ਨਤੀਜੇ ਤੋਂ ਬਾਅਦ ਵੀ CFString ਆਪਣੇ ਆਪ ਨੂੰ ਰੱਖਣ ਲਈ ਪਹਿਲਾਂ ਇਸਨੂੰ ਰੱਖੋ ਅਤੇ ਬਾਅਦ ਵਿੱਚ CFRelease ਨਾਲ ਸੰਤੁਲਿਤ ਕਰੋ; ਨਹੀਂ ਤਾਂ ਇਸਨੂੰ ਰੱਖਣ ਵਾਲੇ ਮਾਲਕ ਨੂੰ ਛੱਡਣ ਤੋਂ ਪਹਿਲਾਂ ਕੰਮ ਮੁਕਾਓ।
ਸਫ਼ਾਈ ਵੇਲੇ ਬਣਾਇਆ/ਕਾਪੀ ਕੀਤਾ ਟਾਰਗਿਟ URL, ਸੈਟਿੰਗਾਂ ਡਿਕਸ਼ਨਰੀ ਅਤੇ ਨਤੀਜਾ ਐਰੇ ਛੱਡੋ, ਜੇ ਢੁੱਕਵਾਂ ਹੋਵੇ ਤਾਂ ਸਕੋਪ ਗਾਰਡ ਵਰਤੋ। ਸਿਰਫ਼ ਇੱਕ ਵੇਰੀਏਬਲ ਦੀ CFStringRef ਕਿਸਮ Get ਨਤੀਜੇ ਉੱਤੇ ਮਾਲਕੀ ਨਹੀਂ ਦਿੰਦੀ।