2012-06-18 8 views
6

मैंने छेद-पंचिंग प्रोटोकोल के साथ एक सर्वर क्लाइंट बनाने की कोशिश की। तो मैं अपने सर्वर को अपने क्लाइंट आईपी और क्लाइंट पोर्ट, पर भेजता हूं और जब कोई दूसरा उपयोगकर्ता कनेक्ट होता है तो सर्वर दोनों क्लाइंट को आईपी और अन्य क्लाइंट के पोर्ट को भेजता है। तो मैं अपने दोनों ग्राहक के बीच एक संबंध स्थापित करने की कोशिश की है कि मैं इस किया है और मुझे लगता है :: बढ़ावा के साथ एक त्रुटि asioबूस्ट के साथ होल पंचिंग :: एएसआई

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >' 

क्या() है: सेवा नहीं मिला गर्भपात

यहाँ मेरी कोड है

std::vector<std::string> response; 

response = split(reply, ':'); 
std::cout << "name : " << response[0] << std::endl; 
std::cout << "adresse : " << response[1] << std::endl; 
std::cout << "port : " << response[2] << std::endl; 

udp::resolver::query query(udp::v4(), response[0], response[1]); 

std::cout << "resolved - - - -" << std::endl; 

struct client *cl = new struct client(); 

cl->endpoint_iterator = resolver.resolve(query); 
// It Crash HERE 

cl->sender_endpoint = *endpoint_iterator; 
cl->name = response[0]; 
_clients.push_back(cl); 
+0

आप एक छोटा सा उदाहरण है जो जो सटीक समस्या से पता चलता compilable है पोस्ट करने के लिए की आवश्यकता है। यह समझना मुश्किल है कि आपके द्वारा पोस्ट किए गए अंशों पर समस्या क्या हो सकती है। – Nim

उत्तर

1

अपनी क्वेरी के पैरामीटर देखें।

आप पोर्ट के रूप में मेजबान पता और प्रतिक्रिया [2] के रूप में प्रतिक्रिया [1] मुद्रण कर रहे हैं। लेकिन आप पोर्ट/सेवा के रूप में मेजबान पता और प्रतिक्रिया [1] के रूप में प्रतिक्रिया [0] के साथ अपनी क्वेरी ऑब्जेक्ट का निर्माण कर रहे हैं।

मुझे संदेह है कि "सेवा नहीं मिली" सेवा आपके होस्टनाम को पोर्ट नंबर या सेवा नाम की तरह दिखती नहीं है।

http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html

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