gpt4 book ai didi

c++ - 使用 boost::asio 进行简单的 udp 通信

转载 作者:行者123 更新时间:2023-11-30 05:13:56 30 4
gpt4 key购买 nike

这是一个简单的问题,但我似乎无法弄清楚我做错了什么。我正在尝试使用 Boost 读取发送到客户端端口的数据,我有以下代码设置 1) UDP 客户端,2) 用于读取的缓冲区和 3) 尝试从套接字读取:

// Set up the socket to read UDP packets on port 10114
boost::asio::io_service io_service;
udp::endpoint endpoint_(udp::v4(), 10114);
udp::socket socket(io_service, endpoint_);

// Data coming across will be 8 bytes per packet
boost::array<char, 8> recv_buf;

// Read data available from port
size_t len = socket.receive_from(
boost::asio::buffer(recv_buf,8), endpoint_);

cout.write(recv_buf.data(), len);

问题是 recieve_from 函数永远不会返回。服务器在另一台计算机上运行并不断生成数据。我可以使用 Wireshark 在本地计算机上查看此端口上的流量。那么,我在这里做错了什么?

最佳答案

因此,事实证明我需要在该端口上监听来自任何地方的连接。因此,端点需要设置为

boost::asio::ip::udp::endpoint endpoint_(boost::asio::ip::address::from_string("0.0.0.0"), 10114);

使用此设置,我得到了预期的数据。仅供引用,0.0.0.0 与 INADDR_ANY 相同。

关于c++ - 使用 boost::asio 进行简单的 udp 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43665117/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com