我看到了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之上添加一個連接協議層,例如。爲每個對等點創建一個「連接」類,併爲每個發送消息的新發送者創建一個新實例。 –