diff --git a/ClientsLibrary/UserClient.cs b/ClientsLibrary/UserClient.cs
index 87176a5..74b66b1 100644
--- a/ClientsLibrary/UserClient.cs
+++ b/ClientsLibrary/UserClient.cs
@@ -44,7 +44,7 @@ namespace ClientsLibrary
/// 服务器的IP地址,默认为127.0.0.1,可用于单机调试,
/// 云服务器端:117.48.203.204,注意,云端为最新版,客户端版本比较旧会调试失败
///
- public static string ServerIp { get; } = "117.48.203.204"; // 用于测试的云服务器地址
+ public static string ServerIp { get; } = "127.0.0.1"; // 用于测试的云服务器地址
///
diff --git a/CommonLibrary/AccountSupport/NetAccount.cs b/CommonLibrary/AccountSupport/NetAccount.cs
index 6e11535..85b772d 100644
--- a/CommonLibrary/AccountSupport/NetAccount.cs
+++ b/CommonLibrary/AccountSupport/NetAccount.cs
@@ -10,33 +10,97 @@ namespace CommonLibrary
///
public class NetAccount
{
+
+ #region Constructor
+
+ ///
+ /// 实例化一个默认的构造函数
+ ///
+ public NetAccount( )
+ {
+ LoginTime = DateTime.Now;
+ }
+
+ #endregion
+
+ #region Public Properties
+
+
///
/// 唯一的用户名
///
public string UserName { get; set; }
+
///
/// 别名
///
public string Alias { get; set; }
+
///
/// ip地址
///
public string IpAddress { get; set; }
+
///
/// 工厂或是部分分类
///
public string Factory { get; set; }
+
///
/// 登陆时间
///
public DateTime LoginTime { get; set; }
+
///
/// 包含的角色名称
///
public string[] Roles { get; set; }
+
///
/// 本地连接唯一的身份标识
///
public string UniqueId { get; set; }
+
+ #endregion
+
+ #region Public Method
+
+ ///
+ /// 获取当前客户端的在线时间的文本描述方式
+ ///
+ ///
+ public string GetOnlineTime( )
+ {
+ TimeSpan timeSpan = DateTime.Now - LoginTime;
+ if (timeSpan.TotalSeconds < 60)
+ {
+ return timeSpan.Seconds.ToString( );
+ }
+ else if (timeSpan.TotalMinutes < 60)
+ {
+ return timeSpan.Minutes + " : " + timeSpan.Seconds;
+ }
+ else if (timeSpan.TotalHours < 24)
+ {
+ return timeSpan.Hours + " : " + timeSpan.Minutes + " : " + timeSpan.Seconds;
+ }
+ else
+ {
+ return timeSpan.Days + " D " + timeSpan.Hours + " : " + timeSpan.Minutes + " : ";
+ }
+ }
+
+ #endregion
+
+ #region Object Override
+
+ ///
+ /// 返回表示当前对象的字符串
+ ///
+ /// 字符串
+ public override string ToString( ) => $"{IpAddress} [ {(string.IsNullOrEmpty( Alias ) ? UserName : Alias)} ] [ {GetOnlineTime( )} ]";
+
+ #endregion
+
}
}
diff --git a/软件系统服务端模版/BasicSupport/NetAccountManager.cs b/软件系统服务端模版/BasicSupport/NetAccountManager.cs
index 7a26efa..ffa19a9 100644
--- a/软件系统服务端模版/BasicSupport/NetAccountManager.cs
+++ b/软件系统服务端模版/BasicSupport/NetAccountManager.cs
@@ -40,6 +40,27 @@ namespace 软件系统服务端模版.BasicSupport
#region Public Method
+ ///
+ /// 获取所有在线客户端的信息
+ ///
+ ///
+ public string[] GetOnlineInformation()
+ {
+ string[] result = null;
+
+ hybirdLock.Enter( );
+ result = new string[OnlineClients.Count];
+
+ for (int i = 0; i < result.Length; i++)
+ {
+ result[i] = OnlineClients[i].ToString( );
+ }
+
+ hybirdLock.Leave( );
+
+ return result;
+ }
+
///
/// 新增一个在线的客户端
diff --git a/软件系统服务端模版/FormServerWindow.Designer.cs b/软件系统服务端模版/FormServerWindow.Designer.cs
index 6182d88..bf4ba7e 100644
--- a/软件系统服务端模版/FormServerWindow.Designer.cs
+++ b/软件系统服务端模版/FormServerWindow.Designer.cs
@@ -69,6 +69,7 @@
//
// statusStrip1
//
+ this.statusStrip1.BackColor = System.Drawing.Color.AliceBlue;
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripStatusLabel2,
@@ -294,42 +295,45 @@
//
this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label6.AutoSize = true;
+ this.label6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(564, 37);
this.label6.Name = "label6";
- this.label6.Size = new System.Drawing.Size(59, 17);
+ this.label6.Size = new System.Drawing.Size(74, 21);
this.label6.TabIndex = 14;
- this.label6.Text = "对象内存:";
+ this.label6.Text = "Simplify:";
//
// label7
//
this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label7.AutoSize = true;
- this.label7.Location = new System.Drawing.Point(564, 58);
+ this.label7.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label7.Location = new System.Drawing.Point(564, 68);
this.label7.Name = "label7";
- this.label7.Size = new System.Drawing.Size(59, 17);
+ this.label7.Size = new System.Drawing.Size(51, 21);
this.label7.TabIndex = 15;
- this.label7.Text = "进程内存:";
+ this.label7.Text = "Push:";
//
// label_GC_Memery
//
this.label_GC_Memery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label_GC_Memery.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label_GC_Memery.Cursor = System.Windows.Forms.Cursors.Hand;
- this.label_GC_Memery.Location = new System.Drawing.Point(629, 37);
+ this.label_GC_Memery.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label_GC_Memery.Location = new System.Drawing.Point(648, 37);
this.label_GC_Memery.Name = "label_GC_Memery";
- this.label_GC_Memery.Size = new System.Drawing.Size(125, 17);
+ this.label_GC_Memery.Size = new System.Drawing.Size(108, 24);
this.label_GC_Memery.TabIndex = 16;
this.label_GC_Memery.Text = "0";
this.label_GC_Memery.TextAlign = System.Drawing.ContentAlignment.TopRight;
- this.label_GC_Memery.Click += new System.EventHandler(this.label_GC_Memery_Click);
//
// label_Pm_Memery
//
this.label_Pm_Memery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label_Pm_Memery.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.label_Pm_Memery.Location = new System.Drawing.Point(629, 58);
+ this.label_Pm_Memery.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label_Pm_Memery.Location = new System.Drawing.Point(648, 67);
this.label_Pm_Memery.Name = "label_Pm_Memery";
- this.label_Pm_Memery.Size = new System.Drawing.Size(125, 17);
+ this.label_Pm_Memery.Size = new System.Drawing.Size(108, 24);
this.label_Pm_Memery.TabIndex = 17;
this.label_Pm_Memery.Text = "0";
this.label_Pm_Memery.TextAlign = System.Drawing.ContentAlignment.TopRight;
@@ -338,6 +342,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.AliceBlue;
this.ClientSize = new System.Drawing.Size(764, 481);
this.Controls.Add(this.label_Pm_Memery);
this.Controls.Add(this.label_GC_Memery);
@@ -396,11 +401,11 @@
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel_time;
private System.Windows.Forms.ToolStripMenuItem 框架作者ToolStripMenuItem;
private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.ToolStripMenuItem 日志查看ToolStripMenuItem;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label_GC_Memery;
private System.Windows.Forms.Label label_Pm_Memery;
- private System.Windows.Forms.ToolStripMenuItem 日志查看ToolStripMenuItem;
}
}
diff --git a/软件系统服务端模版/FormServerWindow.cs b/软件系统服务端模版/FormServerWindow.cs
index d3d601b..a7cefc2 100644
--- a/软件系统服务端模版/FormServerWindow.cs
+++ b/软件系统服务端模版/FormServerWindow.cs
@@ -223,13 +223,13 @@ namespace 软件系统服务端模版
// Start Server
if (!IsSystemStart)
{
- Net_Simplify_Server_Initialization();//同步网络初始化
- Net_Socket_Server_Initialization();//异步网络初始化
- Net_SoftUpdate_Server_Initialization();//软件更新引擎初始化
- Ultimate_File_Initiaization();//共享文件引擎初始化
- Net_File_Portrait_Initialization();//头像文件管理服务
- Net_Udp_Server_Initialization();//UDP引擎服务初始化
- 启动服务器ToolStripMenuItem.Text = "已启动";
+ Net_Simplify_Server_Initialization(); // 同步网络初始化
+ Net_Socket_Server_Initialization(); // 异步网络初始化
+ Net_SoftUpdate_Server_Initialization(); // 软件更新引擎初始化
+ Ultimate_File_Initiaization(); // 共享文件引擎初始化
+ Net_File_Portrait_Initialization(); // 头像文件管理服务
+ Net_Udp_Server_Initialization(); // UDP引擎服务初始化
+ 启动服务器ToolStripMenuItem.Text = "已启动";
启动服务器ToolStripMenuItem.BackColor = Color.LimeGreen;
IsSystemStart = true;
}
@@ -256,9 +256,9 @@ namespace 软件系统服务端模版
private void 消息发送ToolStripMenuItem_Click(object sender, EventArgs e)
{
- //测试发送字节数据
- //net_socket_server.SendAllClients(BitConverter.GetBytes(12345678));
- //将消息群发给所有的客户端,并使用消息弹窗的方式显示
+ // 测试发送字节数据
+ // net_socket_server.SendAllClients(BitConverter.GetBytes(12345678));
+ // 将消息群发给所有的客户端,并使用消息弹窗的方式显示
using (FormInputAndAction fiaa = new FormInputAndAction(
m =>
{
@@ -271,7 +271,7 @@ namespace 软件系统服务端模版
private void 一键断开ToolStripMenuItem_Click(object sender, EventArgs e)
{
- //关闭信号发送至所有在线客户端
+ // 关闭信号发送至所有在线客户端
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.关闭客户端, "");
}
@@ -296,7 +296,7 @@ namespace 软件系统服务端模版
}
private void 账户管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
- //该部分比较复杂,需要对委托,匿名委托概念比较清晰
+ // 该部分比较复杂,需要对委托,匿名委托概念比较清晰
using (FormAccountManage fam = new FormAccountManage(() => UserServer.ServerAccounts.GetAllAccountsJson(),
m => { UserServer.ServerAccounts.LoadAllAccountsJson(m); return true; }))
{
@@ -313,32 +313,19 @@ namespace 软件系统服务端模版
}
private void MaintenanceInitialization()
{
- //维护状态变更
+ // 维护状态变更
if (UserServer.ServerSettings.Can_Account_Login)
{
- label3.Text = "可登录";
+ label3.Text = "可登录"; // Login Enabled True
label3.BackColor = Color.LimeGreen;
}
else
{
- label3.Text = "维护中";
+ label3.Text = "维护中"; // Login Enabled False
label3.BackColor = Color.Tomato;
}
}
-
- private void label_GC_Memery_Click(object sender, EventArgs e)
- {
- //点击了性能组件
- using (FormSuper fs = new FormSuper(() =>
- {
- return SoftCachePerfomance.GetIntArray();
- }))
- {
- fs.ShowDialog();
- }
- }
-
private void 日志查看ToolStripMenuItem_Click(object sender, EventArgs e)
{
using (FormLogNetView fln = new FormLogNetView())
@@ -412,16 +399,9 @@ namespace 软件系统服务端模版
/// 网络状态
/// 字节数据,根据实际情况选择是否使用
/// 来自客户端的字节数据
- private void Net_simplify_server_ReceivedBytesEvent(AppSession session, NetHandle customer, byte[] data)
+ private void Net_simplify_server_ReceivedBytesEvent( AppSession session, NetHandle customer, byte[] data )
{
- if(customer==CommonHeadCode.SimplifyHeadCode.性能计数)
- {
- net_simplify_server.SendMessage(session, customer, GetPerfomace());
- }
- else
- {
- net_simplify_server.SendMessage(session, customer, data);
- }
+ net_simplify_server.SendMessage( session, customer, data );
}
@@ -1045,7 +1025,6 @@ namespace 软件系统服务端模版
{
// 此处决定要不要将在线客户端的数据发送所有客户端
// net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.总在线信息, netAccountManager.ClientsOnlineCache);
-
}
@@ -1084,6 +1063,16 @@ namespace 软件系统服务端模版
///
private NetAccountManager netAccountManager { get; set; } = new NetAccountManager();
+ ///
+ /// 现在所有的在线客户端
+ ///
+ private void RenderOnlineAccount( )
+ {
+ string[] buffer = netAccountManager.GetOnlineInformation( );
+ label4.Text = buffer.Length.ToString( );
+ listBox1.DataSource = buffer;
+ }
+
#endregion
#region Time Tick Thread
@@ -1111,31 +1100,12 @@ namespace 软件系统服务端模版
thread.Start();
}
- ///
- /// 缓存的上次内存占用
- ///
- private long GC_Memery { get; set; }
-
- ///
- /// 程序的内存对象
- ///
- private long Pm_Memery { get; set; }
- private void MethodOccurEverySecond()
+ private void MethodOccurEverySecond( )
{
- long current1 = GC.GetTotalMemory(false);
- // 增加到性能计数
- AddPerfomace(current1);
-
- long current2 = 0;
- toolStripStatusLabel_time.Text = DateTime.Now.ToString();
- label_GC_Memery.Text = current1.ToString();
- label_Pm_Memery.Text = "备用"; //current2.ToString();
- label_GC_Memery.BackColor = current1 < GC_Memery ? Color.Tomato : SystemColors.Control;
- label_Pm_Memery.BackColor = current2 < Pm_Memery ? Color.Tomato : SystemColors.Control;
- GC_Memery = current1;
- Pm_Memery = current2;
+ toolStripStatusLabel_time.Text = DateTime.Now.ToString( );
+ RenderOnlineAccount( );
}
@@ -1180,23 +1150,6 @@ namespace 软件系统服务端模版
}
}
}
-
-
- #region 服务器内存性能缓存小模块
-
- private SoftCacheArrayInt SoftCachePerfomance = new SoftCacheArrayInt(500, 0);
-
- private void AddPerfomace(long value)
- {
- SoftCachePerfomance.AddValue((int)value);//虽然存在不安全隐患,但是几乎不可能大于20亿
- }
-
- private byte[] GetPerfomace()
- {
- return SoftCachePerfomance.GetAllData();
- }
-
- #endregion
#endregion