Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Boost.Asio udp client


Автор: Леопольд 8.8.2011, 19:07
Подскажите, пожалуйста, что не так с кодом. Не уходит пакет на удалённую сторону и всё тут...

Код

    UdpClient::UdpClient(boost::asio::io_service & ioService, std::string host, std::string port):
        socket_(ioService)
    {
        boost::asio::ip::udp::resolver resolver(ioService);
        boost::asio::ip::udp::resolver::query query(host, port);
        endpoint_ = *resolver.resolve(query);

        socket_.async_send_to(boost::asio::buffer("begin sending", sizeof("begin sending") - 1), endpoint_,
                              boost::bind(&UdpTicketForwardingClient::handleSendTo, this, boost::asio::placeholders::error));
    }

    ...
    void runClient()
   {
      boost::asio::io_service ioService;
      UdpClient(ioService, "localhost", "20000");
      ioService.run();
   }

Автор: boostcoder 8.8.2011, 19:14
Цитата(Леопольд @  8.8.2011,  19:07 Найти цитируемый пост)
endpoint_ = *resolver.resolve(query);

зачем резолвить на UDP протоколе? где-то в экзампле такое применяется?
просто создаешь объект udp::endpoint с нужными IP:port, и используешь его многократно.

Цитата(Леопольд @  8.8.2011,  19:07 Найти цитируемый пост)
socket_.async_send_to(boost::asio::buffer("begin sending", sizeof("begin sending") - 1), *resolver.resolve(query),

ы.
тут ты опять резолвишь.. smile

Добавлено через 27 секунд
и тему нужно перенести в раздел "Сети"

Автор: Леопольд 8.8.2011, 20:25
Цитата(boostcoder @  8.8.2011,  19:14 Найти цитируемый пост)
тут ты опять резолвишь..
Это случайно осталось...

Добавлено через 1 минуту и 41 секунду
Цитата(boostcoder @  8.8.2011,  19:14 Найти цитируемый пост)
где-то в экзампле такое применяется?

http://live.boost.org/doc/libs/1_36_0/doc/html/boost_asio/example/echo/blocking_udp_echo_client.cpp

Автор: boostcoder 8.8.2011, 20:29
так а какое значение в хэндлере в error_code?

зы
ты используешь boost-1.36?

Автор: Леопольд 8.8.2011, 20:41
Цитата(boostcoder @  8.8.2011,  20:29 Найти цитируемый пост)
так а какое значение в хэндлере в error_code?

Не успел посмотреть). Надо конструировать сокет вот так, тогда работает. Интересно почему?

Код

socket_(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 0))


Добавлено через 32 секунды
Цитата(boostcoder @  8.8.2011,  20:29 Найти цитируемый пост)
ты используешь boost-1.36? 
не, 1.46
первое что нагуглил

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)