Boost.asio ve UDP kullanarak istemcileri nasıl ayırt edebilirim? Tüm yükseltme örnekleri bir seferde bir uzak uç noktayı tutmak için bir üye değişkeni kullanır. Uç noktaların bir listesini tutmalı ve ulaşıldığında alınan veriyi hangi nesneye göndereceğime karar vermeliyim. Şu anda buİstemcileri asansörü kullanarak farklılaştırma
void Receive() {
boost::asio::ip::udp::endpoint client_endpoint;
char data[32];
socket_.async_receive_from(boost::asio::buffer(data, 32), client_endpoint,
boost::bind(&MyClass::onReceive, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
ama client_endpoint
gibi kod işleyici işlevine (bulunmayabilir) kapsam dışında gidecek var ve bu ben den alıyorum ilk kez ise yeni bir Client
nesne oluşturmak istiyorum veya değilse uygun istemci nesnesini güncelleyin.
Sunucuya üye değişkeni olarak std::set<boost::ip::udp::endpoint> client_sessions_;
tutmayı düşünüyordum, ancak async çağrısı gönderilinceye kadar client_endpoint
hala doldurulmuyor.
Bunu nasıl yaparım?
ben callback'inde imzasını değiştirebilir bilmiyordum/yeni kullanmak (daha az tercih edilir) basitlik için silebilirsiniz: Doğru pasajı gibi bir şey olmalı – shane