2009-10-04 15 views
6

होस्ट को हल करने के लिए boost::asio::ip::tcp::resolver::query के documentation के अनुसार इसे सेवा भी प्राप्त करनी चाहिए।Boost.Asio का उपयोग कर मेजबान (केवल) को कैसे हल करें?

यदि मैं बंदरगाह के संबंध में मेजबान को हल करना चाहता हूं तो क्या होगा? मुझे यह कैसे करना चाहिए? मुझे डमी पोर्ट निर्दिष्ट करना चाहिए?

उत्तर

7

one post in the boost mailing list किसी में किसी और इस तरह यह करने के लिए लग रहा था (कॉपी, पुन: स्वरूपित, सेवा नंबर बदल गया है, और कुछ नहीं):

namespace bai = boost::asio::ip; 
bai::tcp::endpoint ep(bai::address_v4(0xD155AB64), 0); // 209.85.171.100:0 
boost::asio::io_service ios; 
bai::tcp::resolver resolver(ios); 
bai::tcp::resolver::iterator iter = resolver.resolve(ep); 
bai::tcp::resolver::iterator end; 
while (iter != end) 
{ 
    std::cerr << (*iter).host_name() << std::endl; // cg-in-f100.google.com 
    ++iter; 
} 

के रूप में आप सही ढंग से कहा, यहाँ एक सेवा अभी भी में पारित हो जाता है, लेकिन एक Boost.Asio कोड के माध्यम से कदम (resolver_service.hpp में, मैं नहीं बल्कि वर्ष 1.36 रिहाई उपयोग कर रहा हूँ) इस का पता चला:

// First try resolving with the service name. If that fails try resolving 
// but allow the service to be returned as a number. 

तो, बस 0 के साथ जाना है, और यह आप क्या चाहते हैं क्या करना चाहिए।

+0

यह न लें कि आप पोर्ट नंबर "एपी (बाई :: पता_वी 4 (0xD155AB64), 80) का उपयोग करें; // 20 9.85.171.100:80" – Artyom

+0

मैंने थोड़ा सा उदाहरण संशोधित किया, उम्मीद है कि इससे मदद मिलती है। – gimpf

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