6

穴あけプロトコルでサーバークライアントを作ってみました。したがって、サーバーにクライアントIPとクライアントポートを送信し、2番目のユーザーが接続されると、サーバーは他のクライアントのIPとポートの両方をクライアントに送信します。だから私はこれを持っているとき、両方のクライアント間の接続を確立しようとしましたが、boost::asio でエラーが発生しました

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

what(): サービスが見つかりません 中止されました

ここに私のコードがあります

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);
4

1 に答える 1

1

クエリのパラメータを確認してください。

response[1] をホスト アドレスとして出力し、response[2] をポートとして出力しています。ただし、response[0] をホスト アドレスとして、response[1] をポート/サービスとしてクエリ オブジェクトを作成しています。

「Service not found Aborted」は、ホスト名がポート番号またはサービス名のように見えないことを示していると思われます。

http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.htmlを参照してください。

于 2012-07-09T22:49:44.940 に答える