Ghi*_*ita 3 c++ networking boost boost-asio
我在boost doc中看到了官方的异步udp服务器示例.在那里你创建一个单独的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));
Run Code Online (Sandbox Code Playgroud)
如何处理来自客户端的多个并发udp连接,因为如果我尝试使用创建另一个套接字
socket(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))
Run Code Online (Sandbox Code Playgroud)
我得到绑定错误,因为我已经有一个绑定到同一端口的套接字.
编辑 我可以使用不同的服务器源端口向客户端发回响应,但即使我将响应发送回相同的客户端IP /客户端目标端口,它们也无法识别响应.
UDP是无连接传输,因此就UDP而言,连接的概念毫无意义.
如果要将数据发送回消息的发起者,则需要保留async_receive_from回调中返回的sender_endpoint的副本,并将其传回async_send_to.
这也假设客户端也在轮询/阅读并期待回复.它不需要监听与服务器相同的绑定端口(您不需要在客户端与UDP绑定).
我建议您阅读Beej的网络编程指南,以帮助您了解boost ASIO的内容.Boost ASIO让很多事情变得复杂恕我直言.
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#sendtorecv
| 归档时间: |
|
| 查看次数: |
9142 次 |
| 最近记录: |