2010-11-02 16 views
5

मैं CFStreamCreatePairWithSocketToHost इस तरह का उपयोग कर एक लिखने धारा पाने के लिए एक सॉकेट TCP कनेक्शन बनाने रहा हूँ (मैं किसी भी डेटा तैयार करना चाहते हैं न):क्या CFStreamCreatePairWithSocketToHost() का उपयोग करके सॉकेट संदर्भ प्राप्त करने का कोई तरीका है?

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)host, port, NULL, &writeStream); 

यह बहुत अच्छी तरह से काम करता है, लेकिन क्योंकि nagle's algorithm मेरी टीसीपी आदेशों की बफ़र कर रहे हैं। यह अच्छा हो सकता है लेकिन मेरे मामले में मुझे बिना किसी देरी के जितनी जल्दी हो सके कमांड भेजना होगा।

मैं एक तरह से इस "सुविधा" निष्क्रिय करने के लिए निम्न कोड पाया here का उपयोग कर पाया:

int yes = 1; 
setsockopt(CFSocketGetNative(aSocket), IPPROTO_TCP, TCP_NODELAY, (void *)&yes, sizeof(yes)); 

लेकिन मैं यह पता लगाने नहीं कर सकते कि मेरे सॉकेट के लिए एक वैध संदर्भ मिलता है। क्या आप मेरी मदद कर सकते हैं?

उत्तर

9
CFDataRef socketData = CFWriteStreamCopyProperty(writeStream, kCFStreamPropertySocketNativeHandle); 
CFSocketNativeHandle handle; 
CFDataGetBytes(socketData, CFRangeMake(0, sizeof(CFSocketNativeHandle)), &handle); 
// handle now contains the same thing as CFSocketGetNative(aSocket) 
+0

इसके लिए धन्यवाद, मुझे बहुत मदद मिली (14 महीने पहले ... :-)) –

संबंधित मुद्दे

 संबंधित मुद्दे