Files
hjha-server/GlobalSever/GlobalManager/MonitoringAppInfo.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

149 lines
4.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************
*
* 作者:徐贞卫
* 创建时间: 2019-10-16 13:38:05
*
********************************/
using System;
using System.Diagnostics;
using System.Linq;
using System.Net.NetworkInformation;
namespace Server {
/// <summary>
/// 监控服务应用信息
/// </summary>
public class MonitoringAppInfo : IEquatable<MonitoringAppInfo> {
static DateTime unixbase { get; } = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime();
/// <summary>
/// 网卡硬件地址
/// </summary>
public string[] MacAddress { get; set; }
/// <summary>
/// 系统已启动时间(单位:秒)
/// </summary>
public int SysStartTime { get; set; }
/// <summary>
/// 进程PID
/// </summary>
public int Pid { get; set; }
/// <summary>
/// 服务应用完整路径
/// </summary>
public string FullFileName { get; set; }
/// <summary>
/// 模块ID标识符
/// </summary>
public string UniqueId { get; set; }
/// <summary>
/// 模块ID
/// </summary>
public int ModuleId { get; set; }
/// <summary>
/// 节点编号
/// </summary>
public int NodeNumber { get; set; }
/// <summary>
/// GetListViewItem
/// </summary>
/// <returns>GetListViewItem</returns>
public System.Windows.Forms.ListViewItem GetListViewItem() {
if(viewItem == null) {
viewItem = new System.Windows.Forms.ListViewItem(
new string[] { ModuleId.ToString(), NodeNumber.ToString(), UniqueId, FullFileName }) { Tag = this };
}
return viewItem;
}
private System.Windows.Forms.ListViewItem viewItem;
/// <summary>
/// 当前应用信息
/// </summary>
/// <param name="uniqueId">模块ID标识符</param>
/// <param name="moduleId">模块ID</param>
/// <param name="nodeNumber">节点编号</param>
/// <returns>当前进程的应用信息</returns>
public static MonitoringAppInfo GetCurrentApplicateInfo(string uniqueId, int moduleId, int nodeNumber) {
//时间戳
var now = (int)DateTime.Now.Subtract(unixbase).TotalSeconds;
//获取当前进程
var process = Process.GetCurrentProcess();
var mainModule = process.MainModule;
var macAddress = GetNetcardMacaddress();
var sysStartTime = now - (Environment.TickCount / 1000);
var pId = process.Id;
var fullFileName = mainModule.FileName;
return new MonitoringAppInfo {
MacAddress = macAddress,
SysStartTime = sysStartTime,
Pid = pId,
FullFileName = fullFileName,
UniqueId = uniqueId,
ModuleId = moduleId,
NodeNumber = nodeNumber
};
}
/// <summary>
/// 获取本机所有工作的以太网卡物理地址
/// </summary>
/// <returns></returns>
public static string[] GetNetcardMacaddress() {
if (MacAddresss == null) {
var networkAdapters = NetworkInterface.GetAllNetworkInterfaces().Where(p => p.NetworkInterfaceType == NetworkInterfaceType.Ethernet && p.OperationalStatus == OperationalStatus.Up);
MacAddresss = networkAdapters.Select(p => p.GetPhysicalAddress()).Select(p => p.ToString()).ToArray();
}
return MacAddresss;
}
static string[] MacAddresss = null;
/// <summary>
/// 指示当前对象是否等于同一类型的另一个对象
/// </summary>
/// <param name="other">一个与此对象进行比较的对象。</param>
/// <returns>如果当前对象等于 other 参数,则为 true否则为 false。</returns>
public bool Equals(MonitoringAppInfo other) {
if(other == null) {
return false;
}
if(Pid != other.Pid) {
return false;
}
if(ModuleId != other.ModuleId) {
return false;
}
if(NodeNumber != other.NodeNumber) {
return false;
}
if(!string.Equals(FullFileName, other.FullFileName, StringComparison.InvariantCultureIgnoreCase)) {
return false;
}
return true;
}
/// <summary>
/// ToString
/// </summary>
/// <returns></returns>
public override string ToString() {
return $"模块ID:{ModuleId}, 节点ID:{NodeNumber},路径:{FullFileName}";
}
}
}