Простой UDP клиент Boost

Я пытаюсь написать простой клиент для публикации UDP-сообщения на сервере. Мой буфер не отправляется как UDP. Когда я пытаюсь отправить сообщение в netcat, оно не появляется.

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/thread.hpp>

int main(int argc, char *argv[])
{
boost::asio::io_service io_service;
boost::asio::ip::udp::endpoint endpoint_(boost::asio::ip::address::from_string("0.0.0.0"), 2399);
boost::asio::ip::udp::socket socket(io_service, endpoint_);
boost::asio::socket_base::broadcast option(true);
socket.set_option(option);
char*  data = "hello";
socket.send_to(boost::asio::buffer(data, strlen(data)), endpoint_);
getchar();
return 0;
}

0

Решение

Привязка сокета к конечной точке является серверной функцией. Это можно заметить по тому факту, что вы можете получить ошибку «Ошибка привязки / адрес уже используется», если что-то уже прослушивается на этом порту.

Вместо этого используйте socket.open:

Жить на Колиру

#include <iostream>
#include <boost/asio.hpp>

int main()
{
using namespace boost::asio;
using ip::udp;
io_service io_service;

udp::socket socket(io_service);
socket.open(udp::v4());
socket.set_option(socket_base::broadcast(true));

const char* data = "hello";
udp::endpoint endpoint_(ip::address::from_string("0.0.0.0"), 2399);
socket.send_to(boost::asio::buffer(data, strlen(data)), endpoint_);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]