20200126_BDDM_upperpc/SimpleServer/ServerForm.cs
2023-07-27 10:53:17 +08:00

843 lines
35 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.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using LitJson;
using MySql.Data.MySqlClient;
namespace SimpleServer
{
public partial class ServerForm : Form
{
//获取当前程序运行路径
private string Save_Path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"数据记录\";
int date_flag = DateTime.Now.DayOfYear;
static string COD;
static string ammnit;
static string tonitro;
static string tophosp;
static string ph;
static string oxyen;
static string Tem;
static string conductivity;
static string turbidity;
static string time;
public struct Model
{
public string Datetime { get; set; }
public string Measparam { get; set; }
public string Value { get; set; }
public string Unit { get; set; }
public string Type { get; set; }
public string dataflag { get; set; }
}
#region DataMember & Ctor
private Server server = new Server();
private Server_10 server_10 = new Server_10();
public ServerForm()
{
InitializeComponent();
ServerDlgSubscribe(true);
ServerDlgSubscribe_10(true);
}
#endregion
#region
private void btnStart_Click(object sender, EventArgs e)
{
string ip = this.tbIP.Text.Trim();
string port = this.tbPort.Text.Trim();
if (server.Start(ip, int.Parse(port)))
{
ModifyShowsByServerState(true);
}
Thread acceptClientThread = new Thread(BeginAcceptClient);
acceptClientThread.IsBackground = true;
acceptClientThread.Start();
}
private void btnClose_Click(object sender, EventArgs e)
{
if (server.ServerClose())
{
ModifyShowsByServerState(false);
}
server.DisconnectClient();
}
private void btnClear_Click(object sender, EventArgs e)
{
this.txtRecv.Clear();
}
private void btnSend_Click(object sender, EventArgs e)
{
byte[] msg = new byte[10];
msg[0] = 0x01;
msg[1] = 0x02;
server.SendMsg(msg);
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
server.DisconnectClient();
}
private void ServerForm_FormClosing(object sender, FormClosingEventArgs e)
{
ServerDlgSubscribe(false);
}
private void ServerForm_Load(object sender, EventArgs e)
{
ModifyShowsByServerState(false);
ModifyShowsByClientState(false);
}
#endregion
#region
/// <summary>
/// 根据监听状态修改界面显示
/// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用
/// </summary>
/// <param name="serverStart"></param>
private void ModifyShowsByServerState(bool serverStart)
{
this.btnStart.Enabled = !serverStart;
this.btnClose.Enabled = serverStart;
}
/// <summary>
/// 根据监听状态修改界面显示 -端口号2010
/// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用
/// </summary>
/// <param name="serverStart"></param>
private void ModifyShowsByServerState_10(bool serverStart)
{
this.btnStart_10.Enabled = !serverStart;
this.btnClose_10.Enabled = serverStart;
}
/// <summary>
/// 根据连接状态修改界面显示
/// ServerForm_Load,Server_NewClientEventServer_RemoteDisconnectEventServer_LocalDisconnectEvent调用到
/// </summary>
/// <param name="clientConnect"></param>
private void ModifyShowsByClientState(bool clientConnect)
{
this.btnSend.Enabled = clientConnect;
this.btnDisconnect.Enabled = clientConnect;
}
/// <summary>
/// 根据连接状态修改界面显示
/// ServerForm_Load,Server_NewClientEventServer_RemoteDisconnectEventServer_LocalDisconnectEvent调用到
/// </summary>
/// <param name="clientConnect"></param>
private void ModifyShowsByClientState_10(bool clientConnect)
{
this.btnSend.Enabled = clientConnect;
this.btnDisconnect_10.Enabled = clientConnect;
}
private string splitSymbols = "\r\n\r\n";
/// <summary>
/// 日志记录
/// </summary>
/// <param name="content"></param>
private void LogRecord(string content)
{
this.txtLog.AppendText(content + splitSymbols);
}
public double ConvertDateTimeInt(System.DateTime time)//将时间格式的数据类型转换成浮点数类型
{
double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970,1,1));
intResult =(time - startTime).TotalSeconds;
return intResult;
}
public double ConvertByteDouble(byte [] d)
{
double result=0;
float q = BitConverter.ToSingle(d, 0);
result = (double)q;
return result;
}
public byte[] ConvertDoubleByte(double d)
{
byte[] result = new byte[4];
float f=(float)d;
result = BitConverter.GetBytes(f);
return result;
}
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
/// <summary>
/// 将收文或发文字符串处理后加入文本接收区 -2009
/// </summary>
/// <param name="param"></param>
/// --------------------------------------------------------------------------------------------
private void AppendText(byte[] param)
{
string strRcv = null;
//int decNum = 0;//存储十进制
for (int i = 0; i < param.Length; i++) //窗体显示
{
strRcv += param[i].ToString("X2"); //16进制显示
}
string strRcv_1 = strRcv.Substring(0,116);
Tools.AddLgoToTXT("端口号2009原始报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + strRcv_1 + "\r\n");
string str;
int datenow = DateTime.Now.DayOfYear;
if (strRcv_1.Substring(10,2) == "02")
{ //实时数据功能码
if (strRcv_1.Substring(12, 2) == "09")
{//凯米斯大类
if (strRcv_1.Substring(14, 2) == "00")
{//数据类型hex
int data_tem = Convert.ToInt32(strRcv_1.Substring(16, 4), 16);//tem整数
//float f_tem = Convert.ToSingle(data_tem);//转float
int data_x = Convert.ToInt32(strRcv_1.Substring(20, 4),16);//小数
float t_tem=(float)Math.Pow(10,(double)data_x);//次方
float Tem = data_tem / t_tem;
int data_ph = Convert.ToInt32(strRcv_1.Substring(24, 4), 16);//PH整数
//float f_ph = Convert.ToSingle(data_ph);//转float
int data_x_ph = Convert.ToInt32(strRcv_1.Substring(28, 4), 16);//小数
float t_ph = (float)Math.Pow(10, (double)data_x_ph);//次方
//int data_ph = 1;
float COD = data_ph / t_ph;
int data_oxy = Convert.ToInt32(strRcv_1.Substring(32, 4), 16);//oxy整数
//float f_oxy = Convert.ToSingle(data_oxy);//转float
int data_x_oxy = Convert.ToInt32(strRcv_1.Substring(36, 4), 16);//小数
float t_oxy = (float)Math.Pow(10, (double)data_x_oxy);//次方
float turbid = data_oxy / t_oxy;
int data_conductivity = Convert.ToInt32(strRcv_1.Substring(40, 4), 16);//conductivity整数
//float f_conductivity = Convert.ToSingle(data_conductivity);//转float
int data_x_pconductivity = Convert.ToInt32(strRcv_1.Substring(44, 4), 16);//小数
float t_pconductivity = (float)Math.Pow(10, (double)data_x_pconductivity);//次方
float Conductivity = data_conductivity / t_pconductivity;
int data_turbity = Convert.ToInt32(strRcv_1.Substring(48, 4), 16);//turbity整数
//float f_turbity = Convert.ToSingle(data_turbity);//转float
int data_x_turbity = Convert.ToInt32(strRcv_1.Substring(52, 4), 16);//小数
float t_turbity = (float)Math.Pow(10, (double)data_x_turbity);//次方
float PH = data_turbity / t_turbity;
int data_ammnit = Convert.ToInt32(strRcv_1.Substring(56, 4), 16);//ammnit整数
//float f_ammnit = Convert.ToSingle(data_ammnit);//转float
int data_x_ammnit = Convert.ToInt32(strRcv_1.Substring(60, 4), 16);//小数
float t_ammnit = (float)Math.Pow(10, (double)data_x_ammnit);//次方
float ORP = data_ammnit / t_ammnit;
int data_orp = Convert.ToInt32(strRcv_1.Substring(64, 4), 16);//orp整数
// float f_orp = Convert.ToSingle(data_orp);//转float
int data_x_orp = Convert.ToInt32(strRcv_1.Substring(68, 4), 16);//小数
float t_orp = (float)Math.Pow(10, (double)data_x_orp);//次方
float OXY = data_orp / t_orp;
int data_cod = Convert.ToInt32(strRcv_1.Substring(72, 4), 16);//orp整数
//float f_cod = Convert.ToSingle(data_cod);//转float
int data_x_cod = Convert.ToInt32(strRcv_1.Substring(76, 4), 16);//小数
float t_cod = (float)Math.Pow(10, (double)data_x_cod);//次方
float NH4 = data_cod / t_cod;
int data_zhuodu = Convert.ToInt32(strRcv_1.Substring(80, 4), 16);//zhuodu
//float f_cod = Convert.ToSingle(data_cod);//转float
int data_x_zhuodu = Convert.ToInt32(strRcv_1.Substring(84, 4), 16);//小数
float t_zhuodu = (float)Math.Pow(10, (double)data_x_cod);//次方
float zhuodu = data_zhuodu / t_zhuodu;
int HUM = Convert.ToInt32(strRcv_1.Substring(100, 4), 16);//HUM
//float f_cod = Convert.ToSingle(data_cod);//转float
/*float HUM_1 = (HUM / 1000)*33;*/
float HUM_1 = 33;
DateTime time_2 = DateTime.Now;
string constr = "server=localhost;User Id=root;password=ztt12345!;Database=ningbo_wireless";
MySqlConnection mycon = new MySqlConnection(constr);
mycon.Open();
MySqlCommand mycmd = new MySqlCommand("insert into ningbo_wireless_data(id,data_time,Tem,PH,Turbidity,Ammnit,oxygen,COD,Water_level,Hum) values('0201','" + time_2 + "','" + Tem + "','" + PH + "','" + zhuodu + "','" + NH4 + "','" + OXY + "','" + COD + "','II','" + HUM_1 + "')", mycon);//数据库插入
Tools.AddLgoToTXT("端口号2009解析数据.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + ",data_time:" + time_2 + ",Tem:" + Tem + ",PH:" + PH + ",zhuodu" + zhuodu + ",NH4:" + NH4 + ",OXY:" + OXY + ",COD:" + COD + "','II','" + HUM_1 + "\r\n");
//MySqlCommand mycmd_1 = new MySqlCommand("DELETE FROM kfq_node2_sensor WHERE id NOT IN (SELECT kfq_node2_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node2_sensor GROUP BY data_time) kfq_node2_sensor_copy)", mycon_1);
//MySqlCommand mycmd_2 = new MySqlCommand("DELETE FROM kfq_node3_sensor WHERE id NOT IN (SELECT kfq_node3_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node3_sensor GROUP BY data_time) kfq_node3_sensor_copy)", mycon_2);
//MySqlCommand mycmd_3 = new MySqlCommand("DELETE FROM kfq_node4_sensor WHERE id NOT IN (SELECT kfq_node4_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node4_sensor GROUP BY data_time) kfq_node4_sensor_copy)", mycon_3);
try
{
if (mycmd.ExecuteNonQuery() > 0)
{
Console.WriteLine("数据插入成功!");
}
else
{
Console.WriteLine("数据插入wei成功");
}
}
catch (System.Exception ex)
{
//MessageBox.Show(ex.Message, "cuowu");
}
}
}
}
//FEEF002601020900000000000000000000000000000000000000000000000000000000000100FC001C16
/*if (datenow != date_flag)
{
FileStream fs1 = new FileStream(str, FileMode.Create, FileAccess.Write);//创建写入文件
StreamWriter sw = new StreamWriter(fs1);//添加文本结束符等
// sw.WriteLine(data00.ToString() + ' ' + data11.ToString() + ' ' + data22.ToString() + ' ' + data33.ToString() + ' ' + data44.ToString() + ' ' + data55.ToString() + ' ' + data000.ToString() + ' ' + data111.ToString() + ' ' + data222.ToString() + ' ' + DateTime.Now.ToString());//开始写入值
sw.WriteLine(param);
sw.Close();
fs1.Close();
}
else
{
FileStream fs = new FileStream(str, FileMode.Append, FileAccess.Write);
StreamWriter sr = new StreamWriter(fs);
// sr.WriteLine(data00.ToString() + ' ' + data11.ToString() + ' ' + data22.ToString() + ' ' + data33.ToString() + ' ' + data44.ToString() + ' ' + data55.ToString() + ' ' + data000.ToString() + ' ' + data111.ToString() + ' ' + data222.ToString() + ' ' + DateTime.Now.ToString());//开始写入值
sr.WriteLine(param);
sr.Close();
fs.Close();
}*/
date_flag = DateTime.Now.DayOfYear;
int index1 = this.txtRecv.Text.Length;
int length1 = strRcv_1.IndexOf("\r\n");
int index2 = index1 + length1 + 2;
int length2 = param.Length - length1 - 2;
this.txtRecv.AppendText(strRcv_1);
this.txtRecv.Select(index1, length1);
this.txtRecv.SelectionColor = Color.Green;
this.txtRecv.Select(index2, length2);
this.txtRecv.SelectionColor = Color.Black;
this.txtRecv.Select(this.txtRecv.Text.Length, 0);
this.txtRecv.Focus();
}
/// <summary>
/// 将收文或发文字符串处理后加入文本接收区--2010
/// </summary>
/// <param name="param"></param>
/// --------------------------------------------------------------------------------------------
private void AppendText_10(byte[] param)
{
string strRcv = null;
//int decNum = 0;//存储十进制
for (int i = 0; i < param.Length; i++) //窗体显示
{
strRcv += param[i].ToString("X2"); //16进制显示
}
string strRcv_1 = strRcv.Substring(0, 116);
Tools.AddLgoToTXT("端口号2010原始报文.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + strRcv_1 + "\r\n");
string str;
int datenow = DateTime.Now.DayOfYear;
if (strRcv_1.Substring(10, 2) == "02")
{ //实时数据功能码
if (strRcv_1.Substring(12, 2) == "09")
{//凯米斯大类
if (strRcv_1.Substring(14, 2) == "00")
{//数据类型hex
int data_tem = Convert.ToInt32(strRcv_1.Substring(16, 4), 16);//tem整数
//float f_tem = Convert.ToSingle(data_tem);//转float
int data_x = Convert.ToInt32(strRcv_1.Substring(20, 4), 16);//小数
float t_tem = (float)Math.Pow(10, (double)data_x);//次方
float Tem = data_tem / t_tem;
int data_ph = Convert.ToInt32(strRcv_1.Substring(24, 4), 16);//PH整数
//float f_ph = Convert.ToSingle(data_ph);//转float
int data_x_ph = Convert.ToInt32(strRcv_1.Substring(28, 4), 16);//小数
float t_ph = (float)Math.Pow(10, (double)data_x_ph);//次方
//int data_ph = 1;
float COD = data_ph / t_ph;
int data_oxy = Convert.ToInt32(strRcv_1.Substring(32, 4), 16);//oxy整数
//float f_oxy = Convert.ToSingle(data_oxy);//转float
int data_x_oxy = Convert.ToInt32(strRcv_1.Substring(36, 4), 16);//小数
float t_oxy = (float)Math.Pow(10, (double)data_x_oxy);//次方
float turbid = data_oxy / t_oxy;
int data_conductivity = Convert.ToInt32(strRcv_1.Substring(40, 4), 16);//conductivity整数
//float f_conductivity = Convert.ToSingle(data_conductivity);//转float
int data_x_pconductivity = Convert.ToInt32(strRcv_1.Substring(44, 4), 16);//小数
float t_pconductivity = (float)Math.Pow(10, (double)data_x_pconductivity);//次方
float Conductivity = data_conductivity / t_pconductivity;
int data_turbity = Convert.ToInt32(strRcv_1.Substring(48, 4), 16);//turbity整数
//float f_turbity = Convert.ToSingle(data_turbity);//转float
int data_x_turbity = Convert.ToInt32(strRcv_1.Substring(52, 4), 16);//小数
float t_turbity = (float)Math.Pow(10, (double)data_x_turbity);//次方
float PH = data_turbity / t_turbity;
int data_ammnit = Convert.ToInt32(strRcv_1.Substring(56, 4), 16);//ammnit整数
//float f_ammnit = Convert.ToSingle(data_ammnit);//转float
int data_x_ammnit = Convert.ToInt32(strRcv_1.Substring(60, 4), 16);//小数
float t_ammnit = (float)Math.Pow(10, (double)data_x_ammnit);//次方
float ORP = data_ammnit / t_ammnit;
int data_orp = Convert.ToInt32(strRcv_1.Substring(64, 4), 16);//orp整数
// float f_orp = Convert.ToSingle(data_orp);//转float
int data_x_orp = Convert.ToInt32(strRcv_1.Substring(68, 4), 16);//小数
float t_orp = (float)Math.Pow(10, (double)data_x_orp);//次方
float OXY = data_orp / t_orp;
int data_cod = Convert.ToInt32(strRcv_1.Substring(72, 4), 16);//orp整数
//float f_cod = Convert.ToSingle(data_cod);//转float
int data_x_cod = Convert.ToInt32(strRcv_1.Substring(76, 4), 16);//小数
float t_cod = (float)Math.Pow(10, (double)data_x_cod);//次方
float NH4 = data_cod / t_cod;
int data_zhuodu = Convert.ToInt32(strRcv_1.Substring(80, 4), 16);//zhuodu
//float f_cod = Convert.ToSingle(data_cod);//转float
int data_x_zhuodu = Convert.ToInt32(strRcv_1.Substring(84, 4), 16);//小数
float t_zhuodu = (float)Math.Pow(10, (double)data_x_cod);//次方
float zhuodu = data_zhuodu / t_zhuodu;
int HUM = Convert.ToInt32(strRcv_1.Substring(100, 4), 16);//HUM
//float f_cod = Convert.ToSingle(data_cod);//转float
float HUM_1 = (HUM / 1000) * 33;
int V0 = Convert.ToInt32(strRcv_1.Substring(108, 4), 16);//HUM
//float f_cod = Convert.ToSingle(data_cod);//转float
double V1 = (V0 / 1000.00) * 11.16;
DateTime time_2 = DateTime.Now;
string constr = "server=localhost;User Id=root;password=ztt12345!;Database=ningbo_wireless";
MySqlConnection mycon = new MySqlConnection(constr);
mycon.Open();
MySqlCommand mycmd = new MySqlCommand("insert into ningbo_wireless1_data(id,data_time,Tem,PH,Turbidity,Ammnit,oxygen,COD,Water_level,Hum,Vol) values('0201','" + time_2 + "','" + Tem + "','" + PH + "','" + zhuodu + "','" + NH4 + "','" + OXY + "','" + COD + "','II','" + HUM_1 + "','" + V1 + "')", mycon);//数据库插入
Tools.AddLgoToTXT("端口号2010解析数据.txt", Save_Path + System.DateTime.Now.ToString("yyyy_MM_dd") + @"\", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ---- " + ",data_time:" + time_2 + ",Tem:" + Tem + ",PH:" + PH + ",zhuodu" + zhuodu + ",NH4:" + NH4 + ",OXY:" + OXY + ",COD:" + COD + "','II','" + HUM_1 + "\r\n");
//MySqlCommand mycmd_1 = new MySqlCommand("DELETE FROM kfq_node2_sensor WHERE id NOT IN (SELECT kfq_node2_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node2_sensor GROUP BY data_time) kfq_node2_sensor_copy)", mycon_1);
//MySqlCommand mycmd_2 = new MySqlCommand("DELETE FROM kfq_node3_sensor WHERE id NOT IN (SELECT kfq_node3_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node3_sensor GROUP BY data_time) kfq_node3_sensor_copy)", mycon_2);
//MySqlCommand mycmd_3 = new MySqlCommand("DELETE FROM kfq_node4_sensor WHERE id NOT IN (SELECT kfq_node4_sensor_copy.id FROM(SELECT MIN(id) AS id FROM kfq_node4_sensor GROUP BY data_time) kfq_node4_sensor_copy)", mycon_3);
try
{
if (mycmd.ExecuteNonQuery() > 0)
{
Console.WriteLine("数据插入成功!");
}
else
{
Console.WriteLine("数据插入wei成功");
}
}
catch (System.Exception ex)
{
//MessageBox.Show(ex.Message, "cuowu");
}
}
}
}
date_flag = DateTime.Now.DayOfYear;
int index1 = this.txtRecv.Text.Length;
int length1 = strRcv_1.IndexOf("\r\n");
int index2 = index1 + length1 + 2;
int length2 = param.Length - length1 - 2;
this.txtRecv.AppendText(strRcv_1);
this.txtRecv.Select(index1, length1);
this.txtRecv.SelectionColor = Color.Green;
this.txtRecv.Select(index2, length2);
this.txtRecv.SelectionColor = Color.Black;
this.txtRecv.Select(this.txtRecv.Text.Length, 0);
this.txtRecv.Focus();
}
#endregion
#region
/// <summary>
/// 监听启动之后,线程中启动连接接收
/// </summary>
private void BeginAcceptClient()
{
server.BeginAcceptClient();
}
/// <summary>
/// 监听启动之后,线程中启动连接接收-10
/// </summary>
private void BeginAcceptClient_10()
{
server_10.BeginAcceptClient();
}
/// <summary>
/// 在构造函数和ServerForm_FormClosing里调用
/// </summary>
/// <param name="add"></param>
private void ServerDlgSubscribe(bool add)
{
if (add)
{
server.ServerStartEvent += new DlgNoParam(Server_ServerStartEvent);
server.ServerCloseEvent += new DlgNoParam(Server_ServerCloseEvent);
server.NewClientEvent += new DlgOneParam<string>(Server_NewClientEvent);
server.RecvMsgEvent += new DlgOneParam<byte[]>(Server_RecvMsgEvent);
server.RemoteDisconnectEvent += new DlgOneParam<string>(Server_RemoteDisconnectEvent);
server.LocalDisconnectEvent += new DlgNoParam(Server_LocalDisconnectEvent);
}
else
{
server.ServerStartEvent -= new DlgNoParam(Server_ServerStartEvent);
server.ServerCloseEvent -= new DlgNoParam(Server_ServerCloseEvent);
server.NewClientEvent -= new DlgOneParam<string>(Server_NewClientEvent);
server.RecvMsgEvent -= new DlgOneParam<byte[]>(Server_RecvMsgEvent);
server.RemoteDisconnectEvent -= new DlgOneParam<string>(Server_RemoteDisconnectEvent);
server.LocalDisconnectEvent -= new DlgNoParam(Server_LocalDisconnectEvent);
}
}
/// <summary>
/// 在构造函数和ServerForm_FormClosing里调用-2010
/// </summary>
/// <param name="add"></param>
private void ServerDlgSubscribe_10(bool add)
{
if (add)
{
server.ServerStartEvent += new DlgNoParam(Server_ServerStartEvent_10);
server.ServerCloseEvent += new DlgNoParam(Server_ServerCloseEvent_10);
server.NewClientEvent += new DlgOneParam<string>(Server_NewClientEvent_10);
server.RecvMsgEvent += new DlgOneParam<byte[]>(Server_RecvMsgEvent_10);//数据接收解析
server.RemoteDisconnectEvent += new DlgOneParam<string>(Server_RemoteDisconnectEvent_10);
server.LocalDisconnectEvent += new DlgNoParam(Server_LocalDisconnectEvent_10);
}
else
{
server.ServerStartEvent -= new DlgNoParam(Server_ServerStartEvent_10);
server.ServerCloseEvent -= new DlgNoParam(Server_ServerCloseEvent_10);
server.NewClientEvent -= new DlgOneParam<string>(Server_NewClientEvent_10);
server.RecvMsgEvent -= new DlgOneParam<byte[]>(Server_RecvMsgEvent_10);//数据接收解析
server.RemoteDisconnectEvent -= new DlgOneParam<string>(Server_RemoteDisconnectEvent_10);
server.LocalDisconnectEvent -= new DlgNoParam(Server_LocalDisconnectEvent_10);
}
}
#endregion
#region -2009
public void Server_ServerStartEvent()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("服务器(2009)已启动...");
}));
}
else
{
LogRecord("服务器(端口号2009)已启动...");
}
}
public void Server_ServerCloseEvent()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("服务器(端口号2009)已关闭...");
}));
}
else
{
LogRecord("服务器(端口号2009)已关闭...");
}
}
public void Server_NewClientEvent(string param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2009)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
ModifyShowsByClientState(true);
}));
}
else
{
LogRecord("(端口号2009)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
ModifyShowsByClientState(true);
}
}
public void Server_RecvMsgEvent(byte[] param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
AppendText(param);
}));
}
else
{
AppendText(param);
}
}
public void Server_RemoteDisconnectEvent(string param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2009)远程客户端断开连接: " + param);
ModifyShowsByClientState(false);
}));
}
else
{
LogRecord("(端口号2009)远程客户端断开连接: " + param);
ModifyShowsByClientState(false);
}
}
public void Server_LocalDisconnectEvent()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2009)本地客户端断开连接");
ModifyShowsByClientState(false);
}));
}
else
{
LogRecord("(端口号2009)本地客户端断开连接");
ModifyShowsByClientState(false);
}
}
#endregion
#region -2010
public void Server_ServerStartEvent_10()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("服务器(端口号2010)已启动...");
}));
}
else
{
LogRecord("服务器(端口号2010)已启动...");
}
}
public void Server_ServerCloseEvent_10()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("服务器(端口号2010)已关闭...");
}));
}
else
{
LogRecord("服务器(端口号2010)已关闭...");
}
}
public void Server_NewClientEvent_10(string param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2010)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
ModifyShowsByClientState_10(true);
}));
}
else
{
LogRecord("(端口号2010)接收到客户端连接: " + param + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
ModifyShowsByClientState_10(true);
}
}
public void Server_RecvMsgEvent_10(byte[] param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
AppendText_10(param);
}));
}
else
{
AppendText_10(param);
}
}
public void Server_RemoteDisconnectEvent_10(string param)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2010)远程客户端断开连接: " + param);
ModifyShowsByClientState_10(false);
}));
}
else
{
LogRecord("(端口号2010)远程客户端断开连接: " + param);
ModifyShowsByClientState_10(false);
}
}
public void Server_LocalDisconnectEvent_10()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new ThreadStart(delegate()
{
LogRecord("(端口号2010)本地客户端断开连接");
ModifyShowsByClientState_10(false);
}));
}
else
{
LogRecord("(端口号2010)本地客户端断开连接");
ModifyShowsByClientState_10(false);
}
}
#endregion
#region 2010
/// <summary>
/// 开启端口号2010的监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStart_10_Click(object sender, EventArgs e)
{
string ip_10 = this.tbIP_10.Text.Trim();
string port_10 = this.tbPort_10.Text.Trim();
if (server_10.Start(ip_10, int.Parse(port_10)))
{
ModifyShowsByServerState_10(true);
}
Thread acceptClientThread = new Thread(BeginAcceptClient_10);
acceptClientThread.IsBackground = true;
acceptClientThread.Start();
}
/// <summary>
/// 关闭端口号2010的监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose_10_Click(object sender, EventArgs e)
{
if (server_10.ServerClose())
{
ModifyShowsByServerState_10(false);
}
server.DisconnectClient();
}
/// <summary>
/// 关闭连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDisconnect_10_Click(object sender, EventArgs e)
{
server.DisconnectClient();
}
#endregion
}
}