प्राप्त करना मैं पूल.एनटीपी.ऑर्ग से समय सिंक पर कनेक्ट करना चाहता हूं। तो एक सॉकेट बनाने रहाआईओएस डेटा टाइमआउट सीएफएसओकेट
sock=CFSocketCreate(NULL, PF_INET, SOCK_DGRAM, IPPROTO_UDP, kCFSocketDataCallBack|kCFSocketWriteCallBack|kCFSocketConnectCallBack, sockCallback, &sock_ctx);
तो एक पाश
sockref=CFSocketCreateRunLoopSource(NULL, sock, 0);
CFRunLoopAddSource(CFRunLoopGetMain(), sockref, kCFRunLoopCommonModes);
की स्थापना कर रहा हूँ और पता
CFDataRef adrref=CFDataCreate(NULL, (const UInt8 *)&adr, sizeof(adr));
CFSocketError err=CFSocketConnectToAddress(sock, adrref,-1);
से कनेक्ट कर मैं आवश्यक डेटा भेजने अगर मैं कालबैक kCFSocketWriteCallBack है
CFDataRef bufref=CFDataCreate(NULL, buffer, scl->NTP_PACKET_SIZE);
CFSocketError error = CFSocketSendData(scl->sock, NULL, bufref,3);
यहां तक कि सब कुछ सही काम करता है। मेरी वास्तविक समस्या
else if(callbackType==kCFSocketDataCallBack)
9/10 बार ठीक काम कर रहा है। सर्वर प्रतिक्रिया भेज रहा है और मेरी प्रक्रिया जारी है। समस्या यह है कि मेरे ऐप तर्क को जारी रखने के लिए डेटा आने की प्रतीक्षा कर रहा हूं। यदि कोई डेटा kCFSocketDataCallBack
नहीं आता है तो ट्रिगर नहीं किया गया है और ऐप हमेशा के लिए प्रतीक्षा कर रहा है। क्या डेटा प्राप्त करने के इंतजार में मुझे टाइमआउट डालने का कोई तरीका है? (पूल से पुनः कनेक्ट करने के लिए खुद को NSTimer
के बिना)
मुझे एक ही समस्या का सामना करना पड़ता है, क्या आपको कोई समाधान मिल रहा है? – xjdrew