2012-06-18 15 views
6

Intenté hacer un cliente de servidor con un protocole perforador. Entonces envío a mi servidor mi cliente IP y puerto de cliente, Y cuando se conecta un segundo usuario, el servidor envía a ambos clientes el Ip y el puerto del otro cliente. Así que cuando tengo este i tratado de establecer una conexión entre mi cliente y tengo un error con el impulso :: asioPerforación de orificios con boost :: asio

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

lo que(): El servicio no encontró abortada

aquí es mi código

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

Usted necesita para poner un pequeño ejemplo que es compilables que muestra el problema exacto. Es difícil comprender cuál podría ser el problema al analizar los extractos que ha publicado. – Nim

Respuesta

1

verifique los parámetros a su consulta.

Está imprimiendo la respuesta [1] como la dirección del host y la respuesta [2] como el puerto. Pero está construyendo su objeto de consulta con la respuesta [0] como la dirección del host y la respuesta [1] como el puerto/servicio.

Sospecho que "Servicio no encontrado cancelado" se refiere a que su nombre de host no se parece a un número de puerto o nombre de servicio.

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

Cuestiones relacionadas