2012-01-20 12 views
5

मैं ऐसे ऐप पर काम कर रहा हूं जो नेटवर्क से जुड़े डेलगर्स खोजने के लिए यूडीपी पोर्ट 6785 का उपयोग करता है। बाँध सेआईओएस पोर्ट 6785 (IN_ADDRANY) को बाध्यकारी क्यों रोकता है?

int socket_handle; 
    int error = 0; 

    socket_handle = socket(AF_INET, SOCK_DGRAM, 0); 
    if(socket_handle < 0) 
    error = errno; 
    if(error == 0) 
    { 
    struct sockaddr_in addr; 
    memset(&addr, 0, sizeof(addr)); 
    addr.sin_len = sizeof(addr); 
    addr.sin_family = AF_INET; 
    addr.sin_port = htons(6785); 
    addr.sin_addr.s_addr = htonl(INADDR_ANY); 
    error = bind(socket_handle, (struct sockaddr const *)&addr, sizeof(addr)); 
    } 

त्रुटि() त्रुटि 49 (अनुरोध किया पता निर्दिष्ट नहीं कर सकता) है: मेरी एप्लिकेशन बाँध (कॉल करने के लिए) के रूप में प्रयास करता है। क्या यह कुछ आंतरिक डिवाइस सेवा के साथ संघर्ष की वजह से हो रहा है या किसी अज्ञात कारण के लिए ओएस द्वारा अवरुद्ध किया जा रहा है?

यह पता चला है कि अगर मेरे पास वीपीएन बंद है तो विफलता नहीं होती है। वाईफाई से हमारे स्थानीय नेटवर्क तक पहुंचने के लिए मुझे वीपीएन सक्षम करना पड़ा।

+0

तो क्या यह काम करता है यदि आप पोर्ट को किसी और चीज़ में बदलते हैं? –

+0

क्या आपके पास डिवाइस पर स्पलैशटॉप रिमोट चल रहा है? –

उत्तर

0

बाइंड() को कॉल करने से पहले इसे आजमाएं। यह समस्या को हल करता है यदि पोर्ट को TIME_WAIT

int optval = 1; 
setsockopt(socket_handle, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); 
संबंधित मुद्दे