2009-10-04 5 views

Trả lời

7

Trong one post in the boost mailing list người khác dường như để làm điều đó như thế này (sao chép, định dạng lại, dịch vụ số thay đổi, không có gì khác):

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; 
} 

Như bạn nói một cách chính xác, đây là một dịch vụ vẫn được thông qua tại, nhưng một bước qua mã Boost.Asio tiết lộ này (trong resolver_service.hpp, tôi đang sử dụng 1,36 phiên bản khá cũ):

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

Vì vậy, chỉ cần đi với 0, và nó sẽ làm những gì bạn muốn.

+0

Không phải là bạn sử dụng số cổng "ep (bai :: address_v4 (0xD155AB64), 80); // 209.85.171.100:80" – Artyom

+0

Tôi đã sửa đổi một chút ví dụ, hy vọng nó sẽ giúp ích. – gimpf