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 界面逻辑函数 /// /// 根据监听状态修改界面显示 /// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用 /// /// private void ModifyShowsByServerState(bool serverStart) { this.btnStart.Enabled = !serverStart; this.btnClose.Enabled = serverStart; } /// /// 根据监听状态修改界面显示 -端口号2010 /// ServerForm_Load,点击启用服务器,关闭服务器按钮后调用 /// /// private void ModifyShowsByServerState_10(bool serverStart) { this.btnStart_10.Enabled = !serverStart; this.btnClose_10.Enabled = serverStart; } /// /// 根据连接状态修改界面显示 /// ServerForm_Load,Server_NewClientEvent,Server_RemoteDisconnectEvent,Server_LocalDisconnectEvent调用到 /// /// private void ModifyShowsByClientState(bool clientConnect) { this.btnSend.Enabled = clientConnect; this.btnDisconnect.Enabled = clientConnect; } /// /// 根据连接状态修改界面显示 /// ServerForm_Load,Server_NewClientEvent,Server_RemoteDisconnectEvent,Server_LocalDisconnectEvent调用到 /// /// private void ModifyShowsByClientState_10(bool clientConnect) { this.btnSend.Enabled = clientConnect; this.btnDisconnect_10.Enabled = clientConnect; } private string splitSymbols = "\r\n\r\n"; /// /// 日志记录 /// /// 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; } /// /// 将收文或发文字符串处理后加入文本接收区 -2009 /// /// /// -------------------------------------------------------------------------------------------- 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(); } /// /// 将收文或发文字符串处理后加入文本接收区--2010 /// /// /// -------------------------------------------------------------------------------------------- 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 业务逻辑处理 /// /// 监听启动之后,线程中启动连接接收 /// private void BeginAcceptClient() { server.BeginAcceptClient(); } /// /// 监听启动之后,线程中启动连接接收-10 /// private void BeginAcceptClient_10() { server_10.BeginAcceptClient(); } /// /// 在构造函数和ServerForm_FormClosing里调用 /// /// private void ServerDlgSubscribe(bool add) { if (add) { server.ServerStartEvent += new DlgNoParam(Server_ServerStartEvent); server.ServerCloseEvent += new DlgNoParam(Server_ServerCloseEvent); server.NewClientEvent += new DlgOneParam(Server_NewClientEvent); server.RecvMsgEvent += new DlgOneParam(Server_RecvMsgEvent); server.RemoteDisconnectEvent += new DlgOneParam(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(Server_NewClientEvent); server.RecvMsgEvent -= new DlgOneParam(Server_RecvMsgEvent); server.RemoteDisconnectEvent -= new DlgOneParam(Server_RemoteDisconnectEvent); server.LocalDisconnectEvent -= new DlgNoParam(Server_LocalDisconnectEvent); } } /// /// 在构造函数和ServerForm_FormClosing里调用-2010 /// /// 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(Server_NewClientEvent_10); server.RecvMsgEvent += new DlgOneParam(Server_RecvMsgEvent_10);//数据接收解析 server.RemoteDisconnectEvent += new DlgOneParam(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(Server_NewClientEvent_10); server.RecvMsgEvent -= new DlgOneParam(Server_RecvMsgEvent_10);//数据接收解析 server.RemoteDisconnectEvent -= new DlgOneParam(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操作 /// /// 开启端口号2010的监听 /// /// /// 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(); } /// /// 关闭端口号2010的监听 /// /// /// private void btnClose_10_Click(object sender, EventArgs e) { if (server_10.ServerClose()) { ModifyShowsByServerState_10(false); } server.DisconnectClient(); } /// /// 关闭连接 /// /// /// private void btnDisconnect_10_Click(object sender, EventArgs e) { server.DisconnectClient(); } #endregion } }