Libtorrent Session_Status 未更新

Posted

技术标签:

【中文标题】Libtorrent Session_Status 未更新【英文标题】:Libtorrent Session_Status not updating 【发布时间】:2015-08-30 16:05:35 【问题描述】:

我正在尝试更新 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 并且即使互联网关闭也总是有连接。

【问题讨论】:

【参考方案1】:

我相信您的意思是将会话状态分配给您的 Session_Status 对象:

*Session_Status = Session->status();

我建议您不要堆分配 session_status 或 session_settings 对象。

【讨论】:

谢谢你,它现在可以工作了,但我不太明白非堆部分,函数的其他部分是什么错误? 而不是说:session_status* Session_Status; Session_Status = new session_status; 你可以说:session_status Session_Status; 并且不必用 new 分配对象,也不必用 * 取消引用指针。 (session_settings 也是如此)。

以上是关于Libtorrent Session_Status 未更新的主要内容,如果未能解决你的问题,请参考以下文章

Table 'performance_schema.session_status' doesn't exist和Native table 'performance_sc

Mysql报错Table 'performance_schema.session_status' doesn't exist

libtorrent 无法使用 VS2005 构建

解决mysql插入数据报错[Err] 1146 - Table 'performance_schema.session_status' doesn't exist

libtorrent 传输是不是默认加密?

在 libtorrent 示例中使用 maketorrent