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
This commit is contained in:
2026-07-07 12:02:15 +08:00
commit e9616125ce
958 changed files with 158203 additions and 0 deletions

View File

@ -0,0 +1,148 @@
/********************************
*
* 作者:徐贞卫
* 创建时间: 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}";
}
}
}