我看到了boost文档中的官方async udp服务器示例。 还有你创建一个UDP套接字,将其绑定到本地端口和做这样的事情:Boost asio - udp服务器
socket(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))
socket.async_receive_from(buffer(data, max_length), senderEndpoint, boost::bind(&Request::HandleReceiveFrom, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
我如何处理来自客户端的多个并发UDP连接,因为如果我尝试创建使用
另一个插座socket(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))
我得到绑定错误,因为我已经有一个套接字绑定到相同的端口。
编辑 我可以发送回客户使用不同的服务器源端口的反应,但他们不会承认,即使我把响应返回给同一客户端的IP /客户端的目标端口的响应。
也许你应该重用现有的绑定。 –
@MarkGarcia创建的套接字我也需要回复给客户端。有多个客户端可以在同一个套接字上接收数据。 – Ghita
UDP没有任何连接。如果你想连接,你将不得不在UDP之上添加一个连接协议层,例如。为每个对等点创建一个“连接”类,并为每个发送消息的新发送者创建一个新实例。 –