简单的udp客户端提升

时间:2017-10-11 10:54:09

标签: c++ udp boost-asio netcat

我正在尝试编写一个简单的客户端来向服务器发布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;
}

1 个答案:

答案 0 :(得分:0)

将套接字绑定到端点是服务器功能。你可能会注意到这一点,你可能会收到一个“绑定错误/地址已经在使用中”错误,如果有东西在那个端口上侦听的话。

而是使用socket.open

<强> Live On Coliru

#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_);
}