2012-06-18 16 views
6

Próbowałem utworzyć klienta serwera z protokołem dziurkowania. Wysyłam więc na mój serwer mój adres IP klienta i klienta, A kiedy drugi Użytkownik jest podłączony serwer wysyła do klienta Ip i port drugiego klienta. Więc kiedy mam to próbowałem nawiązać połączenie między moim zarówno klientem i mam błąd z boost :: asioDziurkowanie z doładowaniem :: asio

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

co(): Usługa nie znaleziono przerwana

tutaj jest mój kod

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

musisz odpowiedzieć mały przykład, który jest compilable który pokazuje dokładnie problem. Trudno jest zrozumieć, na czym polega problem z zamieszczonymi fragmentami. – Nim

Odpowiedz

1

sprawdź parametry do zapytania.

Użytkownik drukuje odpowiedź [1] jako adres hosta i odpowiedź [2] jako port. Ale konstruujesz obiekt zapytania z odpowiedzią [0] jako adresem hosta i odpowiedzią [1] jako port/usługę.

Podejrzewam, że "Usługa nie znaleziona Przerwana" odnosi się do nazwy hosta nie wyglądającej jak numer portu lub nazwa usługi.

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