Im пытается получить Session_Status обновляется, но по какой-либо причине значения структуры не обновляются, сеанс начинается так:Libtorrent Session_Status не обновляя
using namespace libtorrent;
session* Session;
session_status* Session_Status;
session_settings* Session_Settings;
bool Start_Client_Sess ()
{
using namespace libtorrent;
Session = new session;
Session_Status = new session_status;
Session_Settings = new session_settings;
Session->settings ();
Session->set_settings (*Session_Settings);
Session->add_extension (create_ut_pex_plugin);
Session->add_extension (create_ut_metadata_plugin);
Session->add_extension (create_lt_trackers_plugin);
Session->add_extension (create_smart_ban_plugin);
Session->start_upnp ();
Session->start_natpmp ();
Session->start_dht ();
Session->start_lsd ();
error_code e;
Session->listen_on (std::make_pair (6881 , 6889) , e);
if (e)
{
return false;
}
return true;
}
затем на второй таймер для Windows 1 я делаю это :
void RunTimer ()
{
using namespace libtorrent;
Session->status ();
if (Session->is_listening ())
{
if (Session_Status->has_incoming_connections)
{
INT x = 2;
std::cout << x << "\n";
}
else
{
INT x = 1;
std::cout << x << "\n";
}
}
else
{
INT x = 0;
std::cout << x << "\n";
}
}
, но независимо от того, что сессия всегда слушает, даже если брандмауэр блокирует Libtorrent и всегда есть связь, даже если интернет выключен.
Спасибо за это, теперь он работает, но я действительно не понимаю часть кучи, какая другая часть функций ошибочна? – Shrek
Вместо того, чтобы говорить: 'session_status * Session_Status; Session_Status = new session_status; 'вы можете просто сказать:' session_status Session_Status; 'и не нужно выделять объект новым, а не разыменовывать указатель с помощью' * '. (и то же самое для 'session_settings'). – Arvid