我正在编写点对点(它不应该有服务器 - 这是一项任务)程序来交换文本消息 . 这是一个非常小的聊天 . 简单的消息,没有别的 . 这是我在Boost :: Asio的第一次练习,因此我有一些问题 .

正如我所说,我的聊天应该是点对点的,它应该使用udp协议 . 我认为,最好的方法是使用广播 . 第一个问题:我如何了解新的联系?

另一个问题是发送消息:我在广播地址发送它,然后它传播到本地网络中的所有计算机 . 这样对吗?

此代码发送消息并接收回来 . 像回声一样 . 这样对吗?

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

int main()
{
    try 
    {
        namespace ip = boost::asio::ip;
        boost::asio::io_service io_service;

        ip::udp::socket socket(io_service,
            ip::udp::endpoint(ip::udp::v4(), 1555));
        socket.set_option(boost::asio::socket_base::broadcast(true));

        ip::udp::endpoint broadcast_endpoint(ip::address_v4::broadcast(), 1555);

        boost::array<char, 4> buffer1;
        socket.send_to(boost::asio::buffer(buffer1), broadcast_endpoint);

        ip::udp::endpoint sender_endpoint;

        boost::array<char, 4> buffer2;
        std::size_t bytes_transferred = 
            socket.receive_from(boost::asio::buffer(buffer2), sender_endpoint);

        std::cout << "got " << bytes_transferred << " bytes." << std::endl;
    }
    catch (std::exception &e)
    {
        std::cerr << e.what();
    }

    system("PAUSE");

    return 0;
}