सेट करने के बाद CFStream क्रैश हो गया है नीचे दिए गए कोड में क्या गलत है? मैं सॉक्स प्रॉक्सी से कनेक्ट करने के लिए AsyncSocket का उपयोग करता हूं और onSocketWillConnect
प्रतिनिधि विधि पर प्रॉक्सी सेटिंग्स सेट करता हूं। अगर मैं CFReadStreamSetProperty
और CFWriteStreamSetProperty
पर कॉल छोड़ देता हूं तो सॉकेट कनेक्शन आसानी से अनुसरण करेगा। अन्यथा, मुझे एक डेलोकॉक्टेड इंस्टेंस पर एक [नहीं एक प्रकार का रखरखाव] मिलता है जिसमें कोई ट्रेस करने योग्य स्टैक ट्रेस नहीं होता है (यह सीएफनेटवर्क से संबंधित हो सकता है?)। क्या किसी को कोई विचार है जो देता है?सॉफ़्ट प्रॉक्सी कॉन्फ़िगरेशन
CFDictionaryRef proxyDict = CFNetworkCopySystemProxySettings();
CFMutableDictionaryRef socksConfig = CFDictionaryCreateMutableCopy(NULL, 0, proxyDict);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyHost, CFSTR("192.168.1.148"));
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyPort, (__bridge CFNumberRef)[NSNumber numberWithInt:3129]);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSVersion, kCFStreamSocketSOCKSVersion4);
// set SOCKS for read streams
CFReadStreamRef readStream = [sock getCFReadStream];
if (!CFReadStreamSetProperty(readStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
CFStreamError error = CFReadStreamGetError(readStream);
NSLog(@"[SEVERE] Web Socket Read Stream Error: %ld[%ld]", error.domain, error.error);
}
// set SOCKS for write stream
CFWriteStreamRef writeStream = [sock getCFWriteStream];
if (!CFWriteStreamSetProperty(writeStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
CFStreamError error = CFWriteStreamGetError(writeStream);
NSLog(@"[SEVERE] Web Socket Write Stream Error: %ld[%ld]", error.domain, error.error);
}
// Release
CFRelease(socksConfig);
CFRelease(proxyDict);
किसी को भी इससे पहले सामना नहीं हुआ है? – LaN
जब यह कोड वास्तव में क्रैश करता है? मेरे पास यहां उपयोग में समान कोड है (GCDAsyncSocket का उपयोग करके) जो ठीक काम करता है। जब आप 'CFReadStreamSetProperty' कहते हैं तो कोड तुरंत क्रैश हो जाता है? – yfrancis
यह सॉक्स हैंडशेक के बाद दुर्घटनाग्रस्त हो जाता है। मुझे लगता है कि SOCKSv4 हैंडशेक के साथ इसका कुछ संबंध है क्योंकि एक ही कोड का उपयोग करते हुए SOCKSv5 पोर्ट पर कनेक्ट करते समय यह क्रैश नहीं होता है। – LaN