20200126_BDDM_upperpc/SimpleServer/ServerForm.cs

843 lines
35 KiB
C#
Raw Permalink Normal View History

2023-07-27 02:53:17 +00:00
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
}
}