using System;
using System.Diagnostics;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
namespace CYQ.Data
{
///
/// 用于收集本机的环境信息
/// 相对固定的属性
///
internal partial class LocalEnvironment
{
///
/// 电脑的名称
///
public static string HostName
{
get
{
return Environment.MachineName;
}
}
///
/// 程序运行的当前用户名。
///
public static string UserName
{
get
{
return Environment.UserName;
}
}
///
/// CPU的核数
///
public static int ProcessorCount
{
get
{
return Environment.ProcessorCount;
}
}
/////
///// 当前系统的内存(M)
/////
//public static int HostWorkingSet
//{
// get
// {
// return (int)((Environment.WorkingSet / 1024) / 1024);
// }
//}
private static string _HostIP;
///
/// 本机内网IP,若无,则返回主机名
///
public static string HostIP
{
get
{
if (string.IsNullOrEmpty(_HostIP))
{
bool isSupportDADS = true;
var nets = NetworkInterface.GetAllNetworkInterfaces();
foreach (var item in nets)
{ // 跳过虚拟机网卡
if (item.Description.StartsWith("VirtualBox ") || item.Description.StartsWith("Hyper-V") || item.Description.StartsWith("VMware ") || item.Description.StartsWith("Bluetooth "))
{
continue;
}
var ips = item.GetIPProperties().UnicastAddresses;
foreach (var ip in ips)
{
if (ip.Address.AddressFamily == AddressFamily.InterNetwork && !IPAddress.IsLoopback(ip.Address))
{
try
{
if (isSupportDADS)
{
if (ip.DuplicateAddressDetectionState != DuplicateAddressDetectionState.Preferred)
{
continue;
}
}
}
catch (PlatformNotSupportedException err)
{
isSupportDADS = false;
}
string ipAddr = ip.Address.ToString();
if (ipAddr.EndsWith(".1") || ipAddr.Contains(":")) // 忽略路由和网卡地址。
{
continue;
}
_HostIP = ipAddr;
return _HostIP;
}
}
}
}
return _HostIP ?? "127.0.0.1";
}
}
}
///
/// 变化的部分属性
///
internal partial class LocalEnvironment
{
private static int _ProcessID;
///
/// 当前进程ID
///
public static int ProcessID
{
get
{
if (_ProcessID == 0)
{
_ProcessID = Process.GetCurrentProcess().Id;
}
return _ProcessID;
}
}
///
/// 当前进程占用的内存(M)
///
public int ProcessWorkingSet
{
get
{
return (int)((Environment.WorkingSet / 1024) / 1024);
// System.Diagnostics.p
}
}
//CPU占用率
}
}