2012-06-18 21 views
6

Ich habe versucht, einen Server-Client mit Loch-Protokol zu machen. So sende ich an meinen Server meine Client-IP und Client-Port, Und wenn ein zweiter Benutzer verbunden ist, sendet der Server an beide Client die IP und Port des anderen Clients. So , wenn ich das habe ich versucht, eine Verbindung zwischen meinem sowohl Client aufzubauen, und ich habe einen Fehler mit boost :: asioLochung mit boost :: asio

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

was(): Dienst nicht gefunden Aborted

hier ist mein Code

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

Sie benötigen ein kleines Beispiel zu schreiben, die übersetzbar ist, was das genaue Problem zeigt. Es ist schwer zu ergründen, wie das Thema die von Ihnen geposteten Auszüge aussehen könnte. – Nim

Antwort

1

Überprüfen Sie die Parameter auf Ihre Abfrage.

Sie drucken Antwort [1] als Host-Adresse und Antwort [2] als Port. Aber Sie bauen Ihr Abfrageobjekt mit der Antwort [0] als Hostadresse und Antwort [1] als Port/Dienst auf.

Ich vermute, dass "Service nicht gefunden Abgebrochen" bezieht sich auf Ihren Hostnamen nicht wie eine Portnummer oder Dienstname aussieht.

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