2012-06-18 43 views
6

Tôi đã cố gắng để làm cho một khách hàng máy chủ với lỗ đục lỗ protocole. Vì vậy, tôi gửi đến máy chủ của tôi IP khách hàng của tôi và cổng khách hàng, Và khi một người dùng thứ hai được kết nối với máy chủ gửi cho cả khách hàng IP và cổng của ứng dụng khách khác. Vì vậy, khi tôi có điều này tôi đã cố gắng để thiết lập kết nối giữa hai khách hàng của tôi và tôi có một lỗi với boost :: ASIOHole punching with boost :: asio

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

gì(): Dịch vụ không tìm thấy Aborted

đây là mã của tôi

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

Bạn cần đăng một ví dụ nhỏ có thể hiển thị chính xác. Thật khó để hiểu được vấn đề có thể xem xét các trích đoạn bạn đã đăng. – Nim

Trả lời

1

kiểm tra tham số cho truy vấn của bạn.

Bạn đang in phản hồi [1] làm địa chỉ máy chủ và phản hồi [2] làm cổng. Nhưng bạn đang xây dựng đối tượng truy vấn của bạn với đáp ứng [0] làm địa chỉ máy chủ và phản hồi [1] làm cổng/dịch vụ.

Tôi nghi ngờ rằng "Dịch vụ không tìm thấy Bị hủy" đề cập đến tên máy chủ của bạn không giống như số cổng hoặc tên dịch vụ.

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

Các vấn đề liên quan