gpt4 book ai didi

c++ - Boost asio udp套接字发送到不同的IP地址

转载 作者:行者123 更新时间:2023-12-02 10:38:46 24 4
gpt4 key购买 nike

我有一台udp服务器接收来自多个远程客户端的消息。当它收到一条消息时,我将复制端点并以每个客户端正在监听的端口5000上相同的IP地址答复该客户端。

我尝试了多种调试策略,并在发送回复消息之前立即打印了端点,从而为我提供了正确的IP地址和端口。

发送方:

    std::cout << udp_remote_endpoint.address().to_string();
std::string str(packet.begin(), packet.end());
std::cout << str << std::endl;
io_service.post(
[this, packet]()
{
udp_socket.async_send_to(
boost::asio::buffer(packet),
udp_remote_endpoint,
boost::bind(
&uds::handle_write,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
}
);

在接收器上,我得到了udp_remote_endpoint,在发送之前,我设置了套接字端点:
    new_addr.endpoint = socket.get_udp_remote_endpoint();
new_addr.endpoint.port(5000);
socket.set_udp_remote_endpoint(new_addr.endpoint);

例如,此输出:
192.168.1.131K-131-1559147491761155

实际上是发送到IP 192.168.1.130。消息内容正确“K-131-1559147491761155”

最佳答案

解决了!

我删除了io_service.post并成功了!

`std::cout << udp_remote_endpoint.address().to_string();
std::string str(packet.begin(), packet.end());
std::cout << str << std::endl;
//io_service.post(
// [this, packet]()
// {
udp_socket.async_send_to(
boost::asio::buffer(packet),
udp_remote_endpoint,
boost::bind(
&uds::handle_write,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
// }
//);`

关于c++ - Boost asio udp套接字发送到不同的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56365336/

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