网络组件核心部分重新设计,升级到3.0版本,模版进行适配,原先的字符串组合模式被替代,客户端同步时间更准确。
This commit is contained in:
@@ -12,7 +12,7 @@ namespace CommonLibrary
|
||||
{
|
||||
//初始化模版的版本号
|
||||
//预计第一个正式发行的版本为1.1.0 日期为2017-08-10
|
||||
SoftBasic.FrameworkVersion = new SystemVersion("1.0.5");
|
||||
SoftBasic.FrameworkVersion = new SystemVersion("1.0.6");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="HslCommunication, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="HslCommunication, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Public\HslCommunication.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
@@ -16,46 +16,47 @@ namespace CommonLibrary
|
||||
public static Guid KeyToken { get; set; } = new Guid("1275BB9A-14B2-4A96-9673-B0AF0463D474");
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 同步通信的头说明,以字母A开头,后面接B,C,D,E,F
|
||||
/// 同步通信的指令头说明,以10000开头,后面接20000,30000,
|
||||
/// </summary>
|
||||
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Auto)]
|
||||
public class SimplifyHeadCode
|
||||
{
|
||||
public static string 维护检查 { get; } = "A001";//A开始的表明是系统相关的
|
||||
public static string 更新检查 { get; } = "A002";
|
||||
public static string 账户检查 { get; } = "A003";
|
||||
public static string 参数下载 { get; } = "A004";
|
||||
public static string 密码修改 { get; } = "A005";
|
||||
public static string 更细账户信息 { get; } = "A006";
|
||||
public static string 获取账户信息 { get; } = "A007";
|
||||
public static string 更新公告 { get; } = "A008";
|
||||
public static string 注册账号 { get; } = "A009";
|
||||
public static string 更新版本号 { get; } = "A010";
|
||||
public static string 请求文件列表 { get; } = "A011";
|
||||
public static string 意见反馈 { get; } = "A012";
|
||||
public static int 维护检查 { get; } = 10000;//10000开始的表明是系统相关的
|
||||
public static int 更新检查 { get; } = 10001;
|
||||
public static int 账户检查 { get; } = 10002;
|
||||
public static int 参数下载 { get; } = 10003;
|
||||
public static int 密码修改 { get; } = 10004;
|
||||
public static int 更细账户 { get; } = 10005;
|
||||
public static int 获取账户 { get; } = 10006;
|
||||
public static int 更新公告 { get; } = 10007;
|
||||
public static int 注册账号 { get; } = 10008;
|
||||
public static int 更新版本 { get; } = 10009;
|
||||
public static int 请求文件 { get; } = 10010;
|
||||
public static int 意见反馈 { get; } = 10011;
|
||||
|
||||
|
||||
|
||||
|
||||
public static string 网络日志查看 { get; } = "B001";//B开头的是日志请求和清空
|
||||
public static string 网络日志清空 { get; } = "B002";
|
||||
public static string 同步日志查看 { get; } = "B003";
|
||||
public static string 同步日志清空 { get; } = "B004";
|
||||
public static string 更新日志查看 { get; } = "B005";
|
||||
public static string 更新日志清空 { get; } = "B006";
|
||||
public static string 运行日志查看 { get; } = "B007";
|
||||
public static string 运行日志清空 { get; } = "B008";
|
||||
public static string 共享文件日志查看 { get; } = "B009";
|
||||
public static string 共享文件日志清空 { get; } = "B010";
|
||||
public static string 建议反馈日志查看 { get; } = "B011";
|
||||
public static string 建议反馈日志清空 { get; } = "B012";
|
||||
public static string UDP日志查看 { get; } = "B013";
|
||||
public static string UDP日志清空 { get; } = "B014";
|
||||
public static int 网络日志查看 { get; } = 11000;//11000开头的是日志请求和清空
|
||||
public static int 网络日志清空 { get; } = 11001;
|
||||
public static int 同步日志查看 { get; } = 11002;
|
||||
public static int 同步日志清空 { get; } = 11003;
|
||||
public static int 更新日志查看 { get; } = 11004;
|
||||
public static int 更新日志清空 { get; } = 11005;
|
||||
public static int 运行日志查看 { get; } = 11006;
|
||||
public static int 运行日志清空 { get; } = 11007;
|
||||
public static int 文件日志查看 { get; } = 11008;
|
||||
public static int 文件日志清空 { get; } = 11009;
|
||||
public static int 反馈日志查看 { get; } = 11010;
|
||||
public static int 反馈日志清空 { get; } = 11011;
|
||||
public static int UDP日志查看 { get; } = 11012;
|
||||
public static int UDP日志清空 { get; } = 11013;
|
||||
|
||||
/**************************************************************************************
|
||||
*
|
||||
* 为了保证您的指令头不和系统的冲突,您的指令头应该以C,D,E,F开头
|
||||
* 为了保证您的指令头不和系统的冲突,您的指令头应该以20000之后开头
|
||||
*
|
||||
**************************************************************************************/
|
||||
|
||||
@@ -65,13 +66,13 @@ namespace CommonLibrary
|
||||
/// </summary>
|
||||
public class MultiNetHeadCode
|
||||
{
|
||||
public static string 所有客户端在线信息 { get; } = "H001";
|
||||
public static string 关闭所有客户端 { get; } = "H002";
|
||||
public static string 弹窗消息 { get; } = "H003";
|
||||
public static string 时间推送 { get; } = "H004";
|
||||
public static string 文件数量 { get; } = "H005";
|
||||
public static string 初始化数据 { get; } = "H006";
|
||||
public static string 留言消息 { get; } = "H007";
|
||||
public static int 总在线信息 { get; } = 50000;
|
||||
public static int 关闭客户端 { get; } = 50001;
|
||||
public static int 弹窗新消息 { get; } = 50002;
|
||||
public static int 时间的推送 { get; } = 50003;
|
||||
public static int 文件总数量 { get; } = 50004;
|
||||
public static int 初始化数据 { get; } = 50005;
|
||||
public static int 留言版消息 { get; } = 50006;
|
||||
|
||||
|
||||
/**************************************************************************************
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -22,10 +22,10 @@ namespace 软件系统客户端模版
|
||||
|
||||
public partial class FormDownloading : Form
|
||||
{
|
||||
public FormDownloading(string cmd,Action<OperateResultString> action)
|
||||
public FormDownloading(int customer,Action<OperateResultString> action)
|
||||
{
|
||||
InitializeComponent();
|
||||
net_cmd = cmd;
|
||||
net_cmd = customer;
|
||||
DealWithResult = action;
|
||||
DoubleBuffered = true;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ namespace 软件系统客户端模版
|
||||
}
|
||||
|
||||
|
||||
private string net_cmd = "";
|
||||
private int net_cmd = 0;
|
||||
private Action<OperateResultString> DealWithResult = null;
|
||||
|
||||
private void ThreadRequestServer()
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace 软件系统客户端模版
|
||||
|
||||
}
|
||||
|
||||
private void ReadFromServer(string head_code)
|
||||
private void ReadFromServer(int head_code)
|
||||
{
|
||||
OperateResultString result = net_simplify_client.ReadFromServer(head_code);
|
||||
if (result.IsSuccess)
|
||||
@@ -40,7 +40,7 @@ namespace 软件系统客户端模版
|
||||
}
|
||||
else textBox1.Text = result.ToMessageShowString();
|
||||
}
|
||||
private void ClearFromServer(string head_code)
|
||||
private void ClearFromServer(int head_code)
|
||||
{
|
||||
OperateResultString result = net_simplify_client.ReadFromServer(head_code);
|
||||
if (result.IsSuccess) textBox1.Text = "清除成功";
|
||||
@@ -88,22 +88,22 @@ namespace 软件系统客户端模版
|
||||
}
|
||||
private void userButton9_Click(object sender, EventArgs e)
|
||||
{
|
||||
ReadFromServer(CommonHeadCode.SimplifyHeadCode.共享文件日志查看);
|
||||
ReadFromServer(CommonHeadCode.SimplifyHeadCode.文件日志查看);
|
||||
}
|
||||
|
||||
private void userButton8_Click(object sender, EventArgs e)
|
||||
{
|
||||
ClearFromServer(CommonHeadCode.SimplifyHeadCode.共享文件日志清空);
|
||||
ClearFromServer(CommonHeadCode.SimplifyHeadCode.文件日志清空);
|
||||
}
|
||||
|
||||
private void userButton11_Click(object sender, EventArgs e)
|
||||
{
|
||||
ReadFromServer(CommonHeadCode.SimplifyHeadCode.建议反馈日志查看);
|
||||
ReadFromServer(CommonHeadCode.SimplifyHeadCode.反馈日志查看);
|
||||
}
|
||||
|
||||
private void userButton10_Click(object sender, EventArgs e)
|
||||
{
|
||||
ClearFromServer(CommonHeadCode.SimplifyHeadCode.建议反馈日志清空);
|
||||
ClearFromServer(CommonHeadCode.SimplifyHeadCode.反馈日志清空);
|
||||
}
|
||||
private void userButton13_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -93,6 +93,7 @@ namespace 软件系统客户端模版
|
||||
|
||||
private void userButton_login_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
label_status.Visible = true;
|
||||
//验证输入
|
||||
if (string.IsNullOrEmpty(textBox_userName.Text))
|
||||
@@ -174,6 +175,7 @@ namespace 软件系统客户端模版
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.维护检查);
|
||||
if(result.IsSuccess)
|
||||
{
|
||||
byte[] temp = Encoding.Unicode.GetBytes(result.Content);
|
||||
//例如返回结果为1说明允许登录,0则说明服务器处于维护中,并将信息显示
|
||||
if (result.Content != "1")
|
||||
{
|
||||
@@ -204,11 +206,12 @@ namespace 软件系统客户端模版
|
||||
// 以下展示了服务器校验的方法,如您需要数据库校验,请删除下面并改成SQL访问验证的方式
|
||||
|
||||
//包装数据
|
||||
Newtonsoft.Json.Linq.JObject json = new Newtonsoft.Json.Linq.JObject();
|
||||
json.Add(UserAccount.UserNameText, new Newtonsoft.Json.Linq.JValue(textBox_userName.Text));
|
||||
json.Add(UserAccount.PasswordText, new Newtonsoft.Json.Linq.JValue(textBox_password.Text));
|
||||
|
||||
result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.账户检查+json.ToString());
|
||||
JObject json = new JObject
|
||||
{
|
||||
{ UserAccount.UserNameText, new Newtonsoft.Json.Linq.JValue(textBox_userName.Text) },
|
||||
{ UserAccount.PasswordText, new Newtonsoft.Json.Linq.JValue(textBox_password.Text) }
|
||||
};
|
||||
result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.账户检查, json.ToString());
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
//服务器应该返回账户的信息
|
||||
|
||||
@@ -16,7 +16,7 @@ using HslCommunication.BasicFramework;
|
||||
|
||||
/***************************************************************************************
|
||||
*
|
||||
* 模版日期 2017-05-20
|
||||
* 模版日期 2017-06-16
|
||||
* 创建人 胡少林
|
||||
* 版权所有 胡少林
|
||||
* 授权说明 模版仅授权个人使用,如需商用,请联系hsl200909@163.com洽谈
|
||||
@@ -56,7 +56,7 @@ namespace 软件系统客户端模版
|
||||
private void FormMainWindow_Load(object sender, EventArgs e)
|
||||
{
|
||||
//udp测试
|
||||
//SendServerUdpData("载入了窗体");
|
||||
//SendServerUdpData(0, "载入了窗体");
|
||||
|
||||
//窗口载入
|
||||
label_userName.Text = UserClient.UserAccount.UserName;
|
||||
@@ -94,7 +94,7 @@ namespace 软件系统客户端模版
|
||||
IsWindowShow = true;
|
||||
|
||||
//udp测试
|
||||
//SendServerUdpData("显示了窗体");
|
||||
//SendServerUdpData(0, "显示了窗体");
|
||||
|
||||
//是否显示更新日志,显示前进行判断该版本是否已经显示过了
|
||||
if (UserClient.JsonSettings.IsNewVersionRunning)
|
||||
@@ -111,6 +111,8 @@ namespace 软件系统客户端模版
|
||||
账户管理ToolStripMenuItem.Enabled = false;
|
||||
远程更新ToolStripMenuItem.Enabled = false;
|
||||
}
|
||||
//启动定时器
|
||||
TimeTickInitilization();
|
||||
}
|
||||
private void FormMainWindow_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
@@ -141,7 +143,7 @@ namespace 软件系统客户端模版
|
||||
{ UserAccount.UserNameText, UserClient.UserAccount.UserName },
|
||||
{ UserAccount.PasswordText, p }
|
||||
};
|
||||
return UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.密码修改 + json.ToString()).IsSuccess;
|
||||
return UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.密码修改, json.ToString()).IsSuccess;
|
||||
}, 6, 8))
|
||||
{
|
||||
fpm.ShowDialog();
|
||||
@@ -182,7 +184,7 @@ namespace 软件系统客户端模版
|
||||
private void 更改公告ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (FormInputAndAction fiaa = new FormInputAndAction(str => UserClient.Net_simplify_client.ReadFromServer(
|
||||
CommonHeadCode.SimplifyHeadCode.更新公告 + str).IsSuccess, UserClient.Announcement, "请输入公告内容"))
|
||||
CommonHeadCode.SimplifyHeadCode.更新公告, str).IsSuccess, UserClient.Announcement, "请输入公告内容"))
|
||||
{
|
||||
fiaa.ShowDialog();
|
||||
}
|
||||
@@ -208,10 +210,10 @@ namespace 软件系统客户端模版
|
||||
{
|
||||
FormAccountManage fam = new FormAccountManage(() =>
|
||||
{
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.获取账户信息);
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.获取账户);
|
||||
if (result.IsSuccess) return result.Content;
|
||||
else return result.ToMessageShowString();
|
||||
}, m => UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更细账户信息 + m).IsSuccess);
|
||||
}, m => UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更细账户, m).IsSuccess);
|
||||
fam.ShowDialog();
|
||||
fam.Dispose();
|
||||
}
|
||||
@@ -246,7 +248,7 @@ namespace 软件系统客户端模版
|
||||
private void 意见反馈ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (FormInputAndAction fiaa = new FormInputAndAction(str => UserClient.Net_simplify_client.ReadFromServer(
|
||||
CommonHeadCode.SimplifyHeadCode.意见反馈 + UserClient.UserAccount.UserName + ":" + str).IsSuccess, "", "请输入意见反馈:"))
|
||||
CommonHeadCode.SimplifyHeadCode.意见反馈, UserClient.UserAccount.UserName + ":" + str).IsSuccess, "", "请输入意见反馈:"))
|
||||
{
|
||||
fiaa.ShowDialog();
|
||||
}
|
||||
@@ -274,48 +276,51 @@ namespace 软件系统客户端模版
|
||||
SoftBasic.ShowExceptionMessage(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void Net_socket_client_AcceptString(AsyncStateOne object1, string object2)
|
||||
/// <summary>
|
||||
/// 接收到服务器的字节数据的回调方法
|
||||
/// </summary>
|
||||
/// <param name="state">网络连接对象</param>
|
||||
/// <param name="customer">用户自定义的指令头,用来区分数据用途</param>
|
||||
/// <param name="data">数据</param>
|
||||
private void Net_socket_client_AcceptString(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
//接收到服务器发来的字符串数据
|
||||
string head_code = object2.Substring(0, 4);
|
||||
if (head_code == CommonHeadCode.MultiNetHeadCode.弹窗消息)
|
||||
if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息)
|
||||
{
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
FormPopup fpp = new FormPopup(object2.Substring(4), Color.DodgerBlue, 10000);
|
||||
FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
|
||||
fpp.Show();
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.所有客户端在线信息)
|
||||
else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息)
|
||||
{
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
listBox1.DataSource = object2.Substring(4).Split('#');
|
||||
listBox1.DataSource = data.Split('#');
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.关闭所有客户端)
|
||||
else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端)
|
||||
{
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
Close();
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.SimplifyHeadCode.更新公告)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
|
||||
{
|
||||
//此处应用到了同步类的指令头
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
UserClient.Announcement = object2.Substring(4);
|
||||
label_Announcement.Text = object2.Substring(4);
|
||||
FormPopup fpp = new FormPopup(object2.Substring(4), Color.DodgerBlue, 10000);
|
||||
UserClient.Announcement = data;
|
||||
label_Announcement.Text = data;
|
||||
FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
|
||||
fpp.Show();
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.初始化数据)
|
||||
else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据)
|
||||
{
|
||||
//收到服务器的数据
|
||||
JObject json = JObject.Parse(object2.Substring(4));
|
||||
JObject json = JObject.Parse(data);
|
||||
UserClient.DateTimeServer = json["Time"].ToObject<DateTime>();
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
@@ -323,36 +328,28 @@ namespace 软件系统客户端模版
|
||||
label_file_count.Text = json["FileCount"].ToObject<int>().ToString();
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.文件数量)
|
||||
else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量)
|
||||
{
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
label_file_count.Text = object2.Substring(4);
|
||||
label_file_count.Text = data;
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.时间推送)
|
||||
{
|
||||
UserClient.DateTimeServer = Convert.ToDateTime(object2.Substring(4));
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm") + $"({net_socket_client.DelayTime}ms)";
|
||||
}));
|
||||
}
|
||||
else if (head_code == CommonHeadCode.MultiNetHeadCode.留言消息)
|
||||
else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
|
||||
{
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
UIControls_Chat?.DealwithReceive(object2.Substring(4));
|
||||
UIControls_Chat?.DealwithReceive(data);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
private void Net_socket_client_AcceptByte(AsyncStateOne object1, byte[] object2)
|
||||
private void Net_socket_client_AcceptByte(AsyncStateOne object1, int customer, byte[] object2)
|
||||
{
|
||||
//接收到服务器发来的字节数据
|
||||
if (IsHandleCreated) Invoke(new Action(() =>
|
||||
{
|
||||
MessageBox.Show(BitConverter.ToInt32(object2, 0).ToString());
|
||||
MessageBox.Show(customer.ToString());
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -439,7 +436,7 @@ namespace 软件系统客户端模版
|
||||
|
||||
UIControls_Chat = new UIControls.OnlineChatRender((m) =>
|
||||
{
|
||||
net_socket_client.Send(CommonHeadCode.MultiNetHeadCode.留言消息 + m);
|
||||
net_socket_client.Send(CommonHeadCode.MultiNetHeadCode.留言版消息, m);
|
||||
})
|
||||
{
|
||||
Visible = false,
|
||||
@@ -491,12 +488,82 @@ namespace 软件系统客户端模版
|
||||
/// 调用该方法并指定参数即可,最长字符串不得
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
private void SendServerUdpData(string data)
|
||||
private void SendServerUdpData(int customer, string data)
|
||||
{
|
||||
//测试发送udp消息
|
||||
UserClient.Net_Udp_Client.SendMessage(data);
|
||||
UserClient.Net_Udp_Client.SendMessage(customer, data);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 后台计数线程
|
||||
|
||||
/*********************************************************************************************
|
||||
*
|
||||
* 说明 一个后台线程,用来执行一些周期执行的东西
|
||||
* 注意 它不仅执行每秒触发的代码,也支持每分钟,每天,每月,每年等等
|
||||
*
|
||||
********************************************************************************************/
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化后台的计数线程
|
||||
/// </summary>
|
||||
public void TimeTickInitilization()
|
||||
{
|
||||
|
||||
Thread thread = new Thread(new ThreadStart(ThreadTimeTick));
|
||||
thread.IsBackground = true;
|
||||
thread.Start();
|
||||
}
|
||||
|
||||
public void ThreadTimeTick()
|
||||
{
|
||||
Thread.Sleep(300);//加一个微小的延时
|
||||
int second = DateTime.Now.Second - 1;
|
||||
int minute = -1;
|
||||
int hour = -1;
|
||||
int day = -1;
|
||||
Action DTimeShow = delegate
|
||||
{
|
||||
//显示服务器的时间和当前网络的延时时间,通常为毫秒
|
||||
toolStripStatusLabel_time.Text = net_socket_client.ServerTime.ToString("yyyy-MM-dd HH:mm:ss") + $"({net_socket_client.DelayTime}ms)";
|
||||
};
|
||||
|
||||
while (IsWindowShow)
|
||||
{
|
||||
while (DateTime.Now.Second == second)
|
||||
{
|
||||
Thread.Sleep(20);
|
||||
}
|
||||
second = DateTime.Now.Second;
|
||||
if (IsWindowShow && IsHandleCreated) Invoke(DTimeShow);
|
||||
//每秒钟执行的代码
|
||||
UserClient.DateTimeServer = net_socket_client.ServerTime;
|
||||
|
||||
if (second == 0)
|
||||
{
|
||||
//每个0秒执行的代码
|
||||
}
|
||||
if (minute != DateTime.Now.Minute)
|
||||
{
|
||||
minute = DateTime.Now.Minute;
|
||||
//每分钟执行的代码
|
||||
}
|
||||
if (hour != DateTime.Now.Hour)
|
||||
{
|
||||
hour = DateTime.Now.Hour;
|
||||
//每小时执行的代码
|
||||
}
|
||||
if (day != DateTime.Now.Day)
|
||||
{
|
||||
day = DateTime.Now.Day;
|
||||
//每天执行的代码
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace 软件系统客户端模版
|
||||
account.LoginEnable = comboBox2.SelectedItem.ToString() == "允许";
|
||||
account.ForbidMessage = textBox4.Text;
|
||||
|
||||
OperateResultString result = net_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.注册账号 + account.ToJsonString());
|
||||
OperateResultString result = net_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.注册账号, account.ToJsonString());
|
||||
if (result.IsSuccess && result.Content == "1")
|
||||
{
|
||||
MessageBox.Show("注册成功!");
|
||||
|
||||
@@ -48,8 +48,7 @@ namespace 软件系统客户端模版
|
||||
|
||||
private void userButton_version_Click(object sender, EventArgs e)
|
||||
{
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更新版本号 +
|
||||
textBox1.Text);
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更新版本, textBox1.Text);
|
||||
if (result.IsSuccess && result.Content == "1")
|
||||
{
|
||||
MessageBox.Show("更新成功!");
|
||||
|
||||
@@ -43,10 +43,10 @@ namespace 软件系统客户端模版.UIControls
|
||||
private void userButton_refresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
//向服务器请求数据
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.请求文件列表);
|
||||
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonLibrary.CommonHeadCode.SimplifyHeadCode.请求文件);
|
||||
if(result.IsSuccess)
|
||||
{
|
||||
Cache_Files = JArray.Parse(result.Content).ToObject<List<File_Save>>();
|
||||
Cache_Files = JArray.Parse(result.Content).ToObject<List<HslSoftFile>>();
|
||||
SetFilesShow(Cache_Files);
|
||||
}
|
||||
else
|
||||
@@ -55,7 +55,7 @@ namespace 软件系统客户端模版.UIControls
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFilesShow(List<File_Save> files)
|
||||
private void SetFilesShow(List<HslSoftFile> files)
|
||||
{
|
||||
panel2.SuspendLayout();
|
||||
//清楚缓存
|
||||
@@ -113,7 +113,7 @@ namespace 软件系统客户端模版.UIControls
|
||||
/// <summary>
|
||||
/// 所有文件信息的缓存,以支持直接的搜索
|
||||
/// </summary>
|
||||
private List<File_Save> Cache_Files { get; set; } = new List<File_Save>();
|
||||
private List<HslSoftFile> Cache_Files { get; set; } = new List<HslSoftFile>();
|
||||
/// <summary>
|
||||
/// 文件控件的缓存列表,方便清除垃圾
|
||||
/// </summary>
|
||||
|
||||
@@ -69,12 +69,17 @@ namespace 软件系统客户端模版
|
||||
CommonLibrary.CommonLibrary.Port_Second_Net))
|
||||
{
|
||||
KeyToken = CommonHeadCode.KeyToken,
|
||||
ConnectTimeout = 5000,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 用于使用udp向服务器进行发送即时可丢失数据的对象
|
||||
/// </summary>
|
||||
public static Net_Udp_Client Net_Udp_Client = new Net_Udp_Client(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ServerIp),
|
||||
CommonLibrary.CommonLibrary.Port_Udp_Server));
|
||||
public static Net_Udp_Client Net_Udp_Client = new Net_Udp_Client(
|
||||
new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ServerIp),
|
||||
CommonLibrary.CommonLibrary.Port_Udp_Server))
|
||||
{
|
||||
KeyToken = CommonHeadCode.KeyToken,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<Reference Include="CommonLibrary">
|
||||
<HintPath>..\CommonLibrary\bin\Debug\CommonLibrary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="HslCommunication, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="HslCommunication, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Public\HslCommunication.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
@@ -15,7 +15,7 @@ using HslCommunication.BasicFramework;
|
||||
|
||||
/******************************************************************************************
|
||||
*
|
||||
* 模版日期 2017-05-30
|
||||
* 模版日期 2017-06-16
|
||||
* 创建人 Richard.Hu
|
||||
* 版权所有 Richard.Hu
|
||||
* 授权说明 模版仅授权个人使用,如需商用,请联系hsl200909@163.com洽谈
|
||||
@@ -167,7 +167,7 @@ namespace 软件系统服务端模版
|
||||
using (FormInputAndAction fiaa = new FormInputAndAction(
|
||||
m =>
|
||||
{
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.弹窗消息 + m); return true;
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.弹窗新消息, m); return true;
|
||||
}))
|
||||
{
|
||||
fiaa.ShowDialog();
|
||||
@@ -177,7 +177,7 @@ namespace 软件系统服务端模版
|
||||
private void 一键断开ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
//关闭信号发送至所有在线客户端
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.关闭所有客户端);
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.关闭客户端, "");
|
||||
}
|
||||
|
||||
private void 关于软件ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -305,31 +305,45 @@ namespace 软件系统服务端模版
|
||||
/// <summary>
|
||||
/// 接收来自客户端的字节数据
|
||||
/// </summary>
|
||||
/// <param name="object1">客户端的地址</param>
|
||||
/// <param name="object2">字节数据,根据实际情况选择是否使用</param>
|
||||
private void Net_simplify_server_ReceivedBytesEvent(AsyncStateBase object1, byte[] object2)
|
||||
/// <param name="state">网络状态</param>
|
||||
/// <param name="customer">字节数据,根据实际情况选择是否使用</param>
|
||||
/// <param name="data">来自客户端的字节数据</param>
|
||||
private void Net_simplify_server_ReceivedBytesEvent(AsyncStateOne state, int customer, byte[] data)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, object2);
|
||||
net_simplify_server.SendMessage(state, customer, data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************************************************
|
||||
*
|
||||
* 方法说明: 当接收到来自客户端的数据的时候触发的方法
|
||||
* 特别注意: 如果你的数据处理中引发了异常,应用程序将会奔溃,SendMessage异常系统将会自动处理
|
||||
*
|
||||
******************************************************************************************************************/
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 接收到来自客户端的数据,此处需要放置维护验证,更新验证等等操作
|
||||
/// </summary>
|
||||
/// <param name="object1">客户端的地址</param>
|
||||
/// <param name="object2">消息数据,应该使用指令头+数据组成</param>
|
||||
private void Net_simplify_server_ReceiveStringEvent(AsyncStateBase object1, string object2)
|
||||
/// <param name="state">客户端的地址</param>
|
||||
/// <param name="customer">用于自定义的指令头,可不用,转而使用data来区分</param>
|
||||
/// <param name="data">接收到的服务器的数据</param>
|
||||
private void Net_simplify_server_ReceiveStringEvent(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
//必须返回结果,调用SendMessage(object1,[实际数据]);
|
||||
if (object2.StartsWith("A"))
|
||||
if (customer < 11000)
|
||||
{
|
||||
DataProcessingWithStartA(object1, object2);
|
||||
DataProcessingWithStartA(state, customer, data);
|
||||
}
|
||||
else if (object2.StartsWith("B"))
|
||||
else if (customer < 12000)
|
||||
{
|
||||
DataProcessingWithStartB(object1, object2);
|
||||
DataProcessingWithStartB(state, customer, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, object2);
|
||||
net_simplify_server.SendMessage(state, customer, data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,186 +358,186 @@ namespace 软件系统服务端模版
|
||||
/// <summary>
|
||||
/// A指令块,处理系统基础运行的消息
|
||||
/// </summary>
|
||||
/// <param name="object1">网络状态对象</param>
|
||||
/// <param name="object2">实际的数据</param>
|
||||
private void DataProcessingWithStartA(AsyncStateBase object1, string object2)
|
||||
/// <param name="state">网络状态对象</param>
|
||||
/// <param name="data">实际的数据</param>
|
||||
private void DataProcessingWithStartA(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
string headCode = object2.Substring(0, 4);
|
||||
if (headCode == CommonHeadCode.SimplifyHeadCode.维护检查)
|
||||
if (customer == CommonHeadCode.SimplifyHeadCode.维护检查)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, UserServer.ServerSettings.Can_Account_Login ? "1" : "0" +
|
||||
UserServer.ServerSettings.Account_Forbidden_Reason);
|
||||
net_simplify_server.SendMessage(state, customer, "1");
|
||||
//UserServer.ServerSettings.Can_Account_Login ? "1" : "0" +
|
||||
//UserServer.ServerSettings.Account_Forbidden_Reason);
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更新检查)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新检查)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, UserServer.ServerSettings.SystemVersion.ToString());
|
||||
net_simplify_server.SendMessage(state, customer, UserServer.ServerSettings.SystemVersion.ToString());
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.参数下载)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.参数下载)
|
||||
{
|
||||
Newtonsoft.Json.Linq.JObject json = new Newtonsoft.Json.Linq.JObject();
|
||||
json.Add(nameof(UserServer.ServerSettings.Announcement), new Newtonsoft.Json.Linq.JValue(UserServer.ServerSettings.Announcement));
|
||||
net_simplify_server.SendMessage(object1, json.ToString());
|
||||
net_simplify_server.SendMessage(state, customer, json.ToString());
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.账户检查)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.账户检查)
|
||||
{
|
||||
//此处使用的是组件自带的验证的方式,如果使用SQL数据库,另行验证
|
||||
JObject json = JObject.Parse(object2.Substring(4));
|
||||
JObject json = JObject.Parse(data);
|
||||
//提取账户,密码
|
||||
string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, "");
|
||||
string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, "");
|
||||
net_simplify_server.SendMessage(object1, UserServer.ServerAccounts.CheckAccountJson(
|
||||
name, password, object1.GetRemoteEndPoint().Address.ToString()));
|
||||
net_simplify_server.SendMessage(state, customer, UserServer.ServerAccounts.CheckAccountJson(
|
||||
name, password, state.GetRemoteEndPoint().Address.ToString()));
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更新公告)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
|
||||
{
|
||||
UserServer.ServerSettings.Announcement = object2.Substring(4);
|
||||
UserServer.ServerSettings.Announcement = data;
|
||||
//通知所有客户端更新公告
|
||||
net_socket_server.SendAllClients(object2);
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_socket_server.SendAllClients(customer, data);
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.获取账户信息)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.获取账户)
|
||||
{
|
||||
//返回服务器的账户信息
|
||||
net_simplify_server.SendMessage(object1, UserServer.ServerAccounts.GetAllAccountsJson());
|
||||
net_simplify_server.SendMessage(state, customer, UserServer.ServerAccounts.GetAllAccountsJson());
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更细账户信息)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更细账户)
|
||||
{
|
||||
//更新服务器的账户信息
|
||||
UserServer.ServerAccounts.LoadAllAccountsJson(object2.Substring(4));
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
UserServer.ServerAccounts.LoadAllAccountsJson(data);
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.密码修改)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.密码修改)
|
||||
{
|
||||
//更新服务器的账户密码,此处使用的是组件自带的验证的方式,如果使用SQL数据库,另行验证
|
||||
JObject json = JObject.Parse(object2.Substring(4));
|
||||
JObject json = JObject.Parse(data);
|
||||
//提取账户,密码
|
||||
string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, "");
|
||||
string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, "");
|
||||
UserServer.ServerAccounts.UpdatePassword(name, password);
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更新版本号)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新版本)
|
||||
{
|
||||
try
|
||||
{
|
||||
UserServer.ServerSettings.SystemVersion = new SystemVersion(object2.Substring(4));
|
||||
UserServer.ServerSettings.SystemVersion = new SystemVersion(data);
|
||||
UserServer.ServerSettings.SaveToFile();
|
||||
toolStripStatusLabel_version.Text = UserServer.ServerSettings.SystemVersion.ToString();
|
||||
net_simplify_server.SendMessage(object1, "1");
|
||||
net_simplify_server.SendMessage(state, customer, "1");
|
||||
}
|
||||
catch
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, "0");
|
||||
net_simplify_server.SendMessage(state, customer, "0");
|
||||
}
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.注册账号)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.注册账号)
|
||||
{
|
||||
bool result = UserServer.ServerAccounts.AddNewAccount(object2.Substring(4));
|
||||
net_simplify_server.SendMessage(object1, result ? "1" : "0");
|
||||
bool result = UserServer.ServerAccounts.AddNewAccount(data);
|
||||
net_simplify_server.SendMessage(state, customer, result ? "1" : "0");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.请求文件列表)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.请求文件)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_simple_file_server.ToJsonString());
|
||||
net_simplify_server.SendMessage(state, customer, net_simple_file_server.ToJsonString());
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.意见反馈)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.意见反馈)
|
||||
{
|
||||
AdviceLogHelper.SaveInformation(object2.Substring(4));
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
AdviceLogHelper.SaveInformation(data);
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, object2);
|
||||
net_simplify_server.SendMessage(state, customer, data);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// B指令块,处理日志相关的消息
|
||||
/// </summary>
|
||||
/// <param name="object1"></param>
|
||||
/// <param name="object2"></param>
|
||||
private void DataProcessingWithStartB(AsyncStateBase object1, string object2)
|
||||
/// <param name="state"></param>
|
||||
/// <param name="customer">用户自定义的命令头</param>
|
||||
/// <param name="data"></param>
|
||||
private void DataProcessingWithStartB(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
string headCode = object2.Substring(0, 4);
|
||||
if (headCode == CommonHeadCode.SimplifyHeadCode.网络日志查看)
|
||||
if (customer == CommonHeadCode.SimplifyHeadCode.网络日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_socket_server.LogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, net_socket_server.LogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("网络日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.网络日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.网络日志清空)
|
||||
{
|
||||
net_socket_server.LogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveWarnning("网络日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.同步日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.同步日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_simplify_server.LogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, net_simplify_server.LogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("同步日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.同步日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.同步日志清空)
|
||||
{
|
||||
net_simplify_server.LogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveWarnning("同步日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更新日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_soft_update_Server.LogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, net_soft_update_Server.LogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("更新日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.更新日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.更新日志清空)
|
||||
{
|
||||
net_soft_update_Server.LogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveWarnning("更新日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.运行日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.运行日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, RuntimeLogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, RuntimeLogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("运行日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.运行日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.运行日志清空)
|
||||
{
|
||||
RuntimeLogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveInformation("运行日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.共享文件日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.文件日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_simple_file_server.LogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, net_simple_file_server.LogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("共享文件日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.共享文件日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.文件日志清空)
|
||||
{
|
||||
net_simple_file_server.LogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveInformation("共享文件日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.建议反馈日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.反馈日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, AdviceLogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, customer, AdviceLogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("建议反馈日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.建议反馈日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.反馈日志清空)
|
||||
{
|
||||
AdviceLogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveWarnning("建议反馈日志清空");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.UDP日志查看)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.UDP日志查看)
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, net_udp_server.LogHelper.GetLogText());
|
||||
net_simplify_server.SendMessage(state, 0, net_udp_server.LogHelper.GetLogText());
|
||||
RuntimeLogHelper.SaveInformation("UDP日志查看");
|
||||
}
|
||||
else if (headCode == CommonHeadCode.SimplifyHeadCode.UDP日志清空)
|
||||
else if (customer == CommonHeadCode.SimplifyHeadCode.UDP日志清空)
|
||||
{
|
||||
net_udp_server.LogHelper.ClearLogText();
|
||||
net_simplify_server.SendMessage(object1, "成功");
|
||||
net_simplify_server.SendMessage(state, customer, "成功");
|
||||
RuntimeLogHelper.SaveWarnning("UDP日志清空");
|
||||
}
|
||||
else
|
||||
{
|
||||
net_simplify_server.SendMessage(object1, object2);
|
||||
net_simplify_server.SendMessage(state, customer, data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,11 +571,11 @@ namespace 软件系统服务端模版
|
||||
net_socket_server.LogHelper.LogSaveFileName = Application.StartupPath + @"\net_log.txt";
|
||||
net_socket_server.FormatClientOnline = "#IP:{0} Name:{1}";//必须为#开头,具体格式可由自身需求确定
|
||||
net_socket_server.IsSaveLogClientLineChange = true;//设置客户端上下线是否记录到日志
|
||||
net_socket_server.ClientOnline += Net_socket_server_ClientOnline;//客户端上线触发
|
||||
net_socket_server.ClientOffline += Net_socket_server_ClientOffline;//客户端下线触发,包括异常掉线
|
||||
net_socket_server.MessageAlerts += Net_socket_server_MessageAlerts;//服务器产生提示消息触发
|
||||
net_socket_server.AcceptByte += Net_socket_server_AcceptByte;//服务器接收到字节数据触发
|
||||
net_socket_server.AcceptString += Net_socket_server_AcceptString;//服务器接收到字符串数据触发
|
||||
net_socket_server.ClientOnline += new HslCommunication.NetBase.IEDelegate<AsyncStateOne>(Net_socket_server_ClientOnline);//客户端上线触发
|
||||
net_socket_server.ClientOffline += new HslCommunication.NetBase.IEDelegate<AsyncStateOne, string>(Net_socket_server_ClientOffline);//客户端下线触发,包括异常掉线
|
||||
net_socket_server.MessageAlerts += new HslCommunication.NetBase.IEDelegate<string>(Net_socket_server_MessageAlerts);//服务器产生提示消息触发
|
||||
net_socket_server.AcceptByte += new HslCommunication.NetBase.IEDelegate<AsyncStateOne, int, byte[]>(Net_socket_server_AcceptByte);//服务器接收到字节数据触发
|
||||
net_socket_server.AcceptString += new HslCommunication.NetBase.IEDelegate<AsyncStateOne, int, string>(Net_socket_server_AcceptString);//服务器接收到字符串数据触发
|
||||
net_socket_server.ServerStart(CommonLibrary.CommonLibrary.Port_Main_Net);
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -570,13 +584,24 @@ namespace 软件系统服务端模版
|
||||
}
|
||||
}
|
||||
|
||||
private void Net_socket_server_AcceptString(AsyncStateOne object1, string object2)
|
||||
|
||||
|
||||
/******************************************************************************************************************
|
||||
*
|
||||
* 方法说明: 当接收到来自客户端的数据的时候触发的方法
|
||||
* 特别注意: 如果你的数据处理中引发了异常,应用程序将会继续运行,该异常将会记录在网络日志中,
|
||||
* 所以有必要的话,对可能发生的异常需要提前处理。
|
||||
*
|
||||
******************************************************************************************************************/
|
||||
|
||||
|
||||
private void Net_socket_server_AcceptString(AsyncStateOne object1, int customer, string data)
|
||||
{
|
||||
//如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字符串都会到此处处理
|
||||
if (object2.StartsWith("H"))
|
||||
if (50000 <= customer && customer < 51000)
|
||||
{
|
||||
//H类系统指令
|
||||
DataProcessingWithStartH(object1, object2);
|
||||
DataProcessingWithStartH(object1, customer, data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -584,22 +609,21 @@ namespace 软件系统服务端模版
|
||||
/// <summary>
|
||||
/// H开头的处理块
|
||||
/// </summary>
|
||||
/// <param name="object1"></param>
|
||||
/// <param name="headcode">指令头</param>
|
||||
/// <param name="object2"></param>
|
||||
private void DataProcessingWithStartH(AsyncStateOne object1, string object2)
|
||||
/// <param name="state">网络状态</param>
|
||||
/// <param name="headcode">用户自定义的指令头</param>
|
||||
/// <param name="data">字符串数据</param>
|
||||
private void DataProcessingWithStartH(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
string headCode = object2.Substring(0, 4);
|
||||
if (headCode == CommonHeadCode.MultiNetHeadCode.留言消息)
|
||||
if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
|
||||
{
|
||||
string content = headCode + object1.LoginAlias + DateTime.Now.ToString(" yyyy-MM-dd HH:mm:ss") + Environment.NewLine + object2.Substring(4);
|
||||
string content = state.LoginAlias + DateTime.Now.ToString(" yyyy-MM-dd HH:mm:ss") + Environment.NewLine + data;
|
||||
//转发所有的客户端,包括发送者
|
||||
net_socket_server.SendAllClients(content);
|
||||
net_socket_server.SendAllClients(customer, content);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void Net_socket_server_AcceptByte(AsyncStateOne object1, byte[] object2)
|
||||
private void Net_socket_server_AcceptByte(AsyncStateOne state, int customer, byte[] data)
|
||||
{
|
||||
//如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字节数组都会到此处处理
|
||||
}
|
||||
@@ -630,11 +654,11 @@ namespace 软件系统服务端模版
|
||||
{ "Time", new JValue(DateTime.Now) },
|
||||
{ "FileCount", new JValue(net_simple_file_server.File_Count()) }
|
||||
};
|
||||
net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据 + json.ToString());
|
||||
net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据, json.ToString());
|
||||
|
||||
|
||||
//此处决定要不要将在线客户端的数据发送所有客户端
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.所有客户端在线信息 + net_socket_server.AllClients);
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.总在线信息, net_socket_server.AllClients);
|
||||
//触发上下线功能
|
||||
Net_socket_clients_change(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + ":" +
|
||||
object1.LoginAlias + " 上线");
|
||||
@@ -700,11 +724,12 @@ namespace 软件系统服务端模版
|
||||
}
|
||||
second = DateTime.Now.Second;
|
||||
if (IsWindowShow && IsHandleCreated) Invoke(DTimeShow);
|
||||
//每隔一分钟将时间发送给所有客户端,格式为标准时间
|
||||
//每秒钟执行的代码
|
||||
|
||||
if (second == 0)
|
||||
{
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.时间推送 +
|
||||
DateTime.Now.ToString("O"));
|
||||
//每个0秒执行的代码
|
||||
//net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.时间的推送, DateTime.Now.ToString("O"));
|
||||
}
|
||||
if (minute != DateTime.Now.Minute)
|
||||
{
|
||||
@@ -760,7 +785,7 @@ namespace 软件系统服务端模版
|
||||
private void Net_simple_file_server_FileChange()
|
||||
{
|
||||
//将文件数据发送给客户端
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.文件数量 + net_simple_file_server.File_Count());
|
||||
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.文件总数量, net_simple_file_server.File_Count().ToString());
|
||||
}
|
||||
|
||||
|
||||
@@ -809,27 +834,28 @@ namespace 软件系统服务端模版
|
||||
{
|
||||
net_udp_server = new Net_Udp_Server();
|
||||
net_udp_server.LogHelper.LogSaveFileName = Application.StartupPath + @"\udp_log.txt";//日志路径
|
||||
net_udp_server.KeyToken = CommonHeadCode.KeyToken;
|
||||
net_udp_server.ReceiveCacheLength = 1024;//单次接收数据的缓冲长度
|
||||
net_udp_server.AcceptByte += Net_udp_server_AcceptByte;//接收到字节数据的时候触发事件
|
||||
net_udp_server.AcceptString += Net_udp_server_AcceptString;//接收到字符串数据的时候触发事件
|
||||
net_udp_server.ServerStart(CommonLibrary.CommonLibrary.Port_Udp_Server);
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
SoftBasic.ShowExceptionMessage(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void Net_udp_server_AcceptString(AsyncStateOne object1, string object2)
|
||||
private void Net_udp_server_AcceptString(AsyncStateOne state, int customer, string data)
|
||||
{
|
||||
//此处为测试
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
textBox1.AppendText($"{DateTime.Now.ToString("MM-dd HH:mm:ss ")}来自IP:{object1._IpEnd_Point.Address.ToString()} 内容:{object2}{Environment.NewLine}");
|
||||
textBox1.AppendText($"{DateTime.Now.ToString("MM-dd HH:mm:ss ")}来自IP:{state._IpEnd_Point.Address.ToString()} 内容:{data}{Environment.NewLine}");
|
||||
}));
|
||||
}
|
||||
|
||||
private void Net_udp_server_AcceptByte(AsyncStateOne object1, byte[] object2)
|
||||
private void Net_udp_server_AcceptByte(AsyncStateOne state, int customer, byte[] data)
|
||||
{
|
||||
//具体用法参考上面字符串方法
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<Reference Include="CommonLibrary">
|
||||
<HintPath>..\CommonLibrary\bin\Debug\CommonLibrary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="HslCommunication, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="HslCommunication, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Public\HslCommunication.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
Reference in New Issue
Block a user