Compare commits
2
Commits
13fcedcae5
...
372080590c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
372080590c | ||
|
|
34b7771efb |
No files matched your search
+34
-27
@@ -4,6 +4,7 @@ using System.Data;
|
|||||||
using System.Security.Cryptography.Pkcs;
|
using System.Security.Cryptography.Pkcs;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Threading.Channels;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
@@ -38,17 +39,17 @@ namespace ForwardingServerUI.Class
|
|||||||
//离线记录
|
//离线记录
|
||||||
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "] NOT ID " +
|
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "] NOT ID " +
|
||||||
client.Id + " IP " + client.IP);
|
client.Id + " IP " + client.IP);
|
||||||
|
|
||||||
DataRow row = MainWindowViewModel._machineTable.Select("ID='" + client.Id + "'").First();
|
|
||||||
|
|
||||||
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "] BREAK LINK ID = " +
|
|
||||||
row["ID"] + " IP = " + row["IP"] + " Enterprise = " + row["Enterprise"] +
|
|
||||||
" MachineName = " + row["MachineName"]);
|
|
||||||
|
|
||||||
Application.Current.Dispatcher.Invoke(() =>
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
DataRow row = MainWindowViewModel._machineTable.Select("ID='" + client.Id + "'").First();
|
||||||
|
|
||||||
|
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "] BREAK LINK ID = " +
|
||||||
|
row["ID"] + " IP = " + row["IP"] + " Enterprise = " + row["Enterprise"] +
|
||||||
|
" MachineName = " + row["MachineName"]);
|
||||||
|
|
||||||
MainWindowViewModel._machineTable.Rows.Remove(row);
|
MainWindowViewModel._machineTable.Rows.Remove(row);
|
||||||
});
|
});
|
||||||
|
|
||||||
return EasyTask.CompletedTask;
|
return EasyTask.CompletedTask;
|
||||||
};//有客户端断开连接
|
};//有客户端断开连接
|
||||||
service.Received = (client, e) =>{
|
service.Received = (client, e) =>{
|
||||||
@@ -162,43 +163,49 @@ namespace ForwardingServerUI.Class
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int rows = MainWindowViewModel._machineTable.Rows.Count;
|
DataRow[] row = MainWindowViewModel._machineTable.Select("HeartbeatTime<'" + DateTime.Now.AddSeconds(-30).ToString() + "'");
|
||||||
for (int i = rows; i > 0; i--)
|
|
||||||
{
|
|
||||||
DataRow dataRow = MainWindowViewModel._machineTable.Rows[i-1];
|
|
||||||
DateTime dateTime = DateTime.Parse(dataRow["HeartbeatTime"].ToString()!);
|
|
||||||
|
|
||||||
if (DateTime.Now > dateTime.AddSeconds(30) && (int)dataRow["Start"] == 30)
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
foreach (var dataRow in row)
|
||||||
{
|
{
|
||||||
Application.Current.Dispatcher.Invoke(() =>
|
if ((int)dataRow["Start"] == 30)
|
||||||
{
|
{
|
||||||
dataRow.BeginEdit();
|
dataRow.BeginEdit();
|
||||||
dataRow["Start"] = 999;
|
dataRow["Start"] = 999;
|
||||||
dataRow.EndEdit();
|
dataRow.EndEdit();
|
||||||
dataRow.AcceptChanges();
|
dataRow.AcceptChanges();
|
||||||
});
|
|
||||||
|
|
||||||
Console.WriteLine("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "] NOT LINK ID = " +
|
Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] NOT LINK ID = {dataRow["ID"]} " +
|
||||||
dataRow["ID"] + " IP = " + dataRow["IP"] + " Enterprise = " + dataRow["Enterprise"] +
|
$"IP = {dataRow["IP"]} Enterprise = {dataRow["Enterprise"]} " +
|
||||||
" MachineName = " + dataRow["MachineName"]);
|
$"MachineName = {dataRow["MachineName"]}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (DateTime.Now > dateTime.AddSeconds(180))
|
DataRow[] rowout = MainWindowViewModel._machineTable.Select("HeartbeatTime<'" + DateTime.Now.AddSeconds(-120).ToString() + "'");
|
||||||
|
|
||||||
|
Application.Current.Dispatcher.Invoke(() =>
|
||||||
|
{
|
||||||
|
foreach (var dataRow in rowout)
|
||||||
{
|
{
|
||||||
//关闭无回应连接
|
dataRow.BeginEdit();
|
||||||
|
dataRow["Start"] = 999;
|
||||||
|
dataRow.EndEdit();
|
||||||
|
dataRow.AcceptChanges();
|
||||||
|
|
||||||
foreach (var item in service.Clients)
|
foreach (var item in service.Clients)
|
||||||
{
|
{
|
||||||
if (item.Id == dataRow["ID"].ToString())
|
if (item.Id == dataRow["ID"].ToString())
|
||||||
{
|
{
|
||||||
await item.CloseAsync();
|
item.CloseAsync(); // 关闭完成
|
||||||
|
item.Dispose(); // 释放资源
|
||||||
//在断开连接后,释放对象。
|
break;
|
||||||
item.Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -206,6 +213,6 @@ namespace ForwardingServerUI.Class
|
|||||||
LogGing.ERRDATA(ex);
|
LogGing.ERRDATA(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,8 @@ namespace ForwardingServerUI
|
|||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
public static DataTable _userTable = new();
|
public static DataTable _userTable = new();
|
||||||
|
|
||||||
|
public static readonly object TableLock = new object();
|
||||||
|
|
||||||
public async void Data()
|
public async void Data()
|
||||||
{
|
{
|
||||||
_machineTable.Columns.Add("ID", typeof(string));
|
_machineTable.Columns.Add("ID", typeof(string));
|
||||||
|
|||||||
Reference in new issue
Block a user