Fix: GetPort issue causing not show host offline log

This commit is contained in:
shaun
2026-01-21 17:33:51 +01:00
parent 43e752cf9c
commit 6a1e0810ab
2 changed files with 15 additions and 8 deletions

View File

@@ -1890,6 +1890,7 @@ void CMy2015RemoteDlg::OnOnlineDelete()
ctx->Destroy(); ctx->Destroy();
strIP+="断开连接"; strIP+="断开连接";
ShowMessage("操作成功",strIP + "[" + aliveInfo.c_str() + "]"); ShowMessage("操作成功",strIP + "[" + aliveInfo.c_str() + "]");
Mprintf("%s 断开链接 [%s]\n", strIP, aliveInfo.c_str());
} }
LeaveCriticalSection(&m_cs); LeaveCriticalSection(&m_cs);
} }
@@ -2814,25 +2815,28 @@ LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
return S_OK; return S_OK;
} }
CString ip, port; CString port;
port.Format("%d", lParam); port.Format("%d", lParam);
EnterCriticalSection(&m_cs); EnterCriticalSection(&m_cs);
int n = m_CList_Online.GetItemCount(); int n = m_CList_Online.GetItemCount();
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {
CString cur = m_CList_Online.GetItemText(i, ONLINELIST_ADDR); CString cur = m_CList_Online.GetItemText(i, ONLINELIST_ADDR);
if (cur == port) { if (cur == port) {
ip = m_CList_Online.GetItemText(i, ONLINELIST_IP);
auto ctx = (context*)m_CList_Online.GetItemData(i); auto ctx = (context*)m_CList_Online.GetItemData(i);
m_CList_Online.DeleteItem(i); m_CList_Online.DeleteItem(i);
m_HostList.erase(ctx); m_HostList.erase(ctx);
auto tm = ctx->GetAliveTime();
std::string aliveInfo = tm>=86400 ? floatToString(tm / 86400.f) + " d" :
tm >= 3600 ? floatToString(tm / 3600.f) + " h" :
tm >= 60 ? floatToString(tm / 60.f) + " m" : floatToString(tm) + " s";
ShowMessage("操作成功", ip + "主机下线[" + aliveInfo.c_str() + "]");
break; break;
} }
} }
if (host) {
CString ip = host->GetClientData(ONLINELIST_IP);
auto tm = host->GetAliveTime();
std::string aliveInfo = tm >= 86400 ? floatToString(tm / 86400.f) + " d" :
tm >= 3600 ? floatToString(tm / 3600.f) + " h" :
tm >= 60 ? floatToString(tm / 60.f) + " m" : floatToString(tm) + " s";
ShowMessage("操作成功", ip + "主机下线[" + aliveInfo.c_str() + "]");
Mprintf("%s 主机下线 [%s]\n", ip, aliveInfo.c_str());
}
LeaveCriticalSection(&m_cs); LeaveCriticalSection(&m_cs);
if (p && ::IsWindow(p->GetSafeHwnd())) { if (p && ::IsWindow(p->GetSafeHwnd())) {

View File

@@ -527,7 +527,10 @@ public:
} }
virtual int GetPort() const virtual int GetPort() const
{ {
return sClientSocket; // 第一次返回套接字,后续返回地址栏端口号
if (sClientInfo[ONLINELIST_ADDR].IsEmpty())
return sClientSocket;
return atoi(sClientInfo[ONLINELIST_ADDR]);
} }
CString GetClientData(int index) const override CString GetClientData(int index) const override
{ {