/// <summary> /// 接收报文后的响应报文的发送方法,并改变Form1的某些类的实例的外观 /// </summary> private void sendData() { if (ClientIPCombobox.SelectedIndex == -1) { ClientIPCombobox.Text = string.Empty; MessageBox.Show("请重新选择客户端"); return; } Socket socket = connect.clientsocketList[ClientIPCombobox.SelectedIndex]; try { byte[] data = Tools.strToToHexByte(textBox50.Text); //添加日志 string sourcestr = ((System.Net.IPEndPoint)socket.RemoteEndPoint).Address.ToString() + ":" + ((System.Net.IPEndPoint)socket.RemoteEndPoint).Port.ToString(); string strsendlog = "\r\n\r\n" + ">>>>" + sourcestr + " " + DateTime.Now.ToString() + "\r\n" + textBox50.Text; addLog(strsendlog); //发送数据 socket.Send(data); FormMessageTextBox.AppendText("\r\n响应信息发送成功"); } catch (Exception) { Console.WriteLine("sendData出现异常"); } }
/// <summary> /// 开始服务器的委托方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void startServerbtn_Click(object sender, EventArgs e) { if (IP.Text == string.Empty) { MessageBox.Show("请输入IP"); return; } else { try { if (ServerStartBtn.Text == "开始") { FormMessageTextBox.AppendText(Environment.NewLine + "\r\n准备打开服务器"); Connect(); FormMessageTextBox.AppendText(Environment.NewLine + "打开服务器"); ServerStartBtn.Text = "停止"; } else { FormMessageTextBox.AppendText(Environment.NewLine + "准备停止服务器"); if (connect.myThread.IsAlive) { Console.WriteLine("slidgsdsjl "); } /* * connect.myThread.Abort(); * connect.myThread.Join(); * connect.dataReceivedThread.Abort(); * connect.dataReceivedThread.Join(); */ connect.stopServer();///异常:空的引用异常。 FormMessageTextBox.AppendText(Environment.NewLine + "停止服务器"); ServerStartBtn.Text = "开始"; } } catch (Exception ex) { Console.WriteLine("出现异常:" + ex.StackTrace); Console.WriteLine("出现异常:" + ex.Message); FormMessageTextBox.AppendText("\r\n出现异常:" + ex.Message + "未能打开服务器,并关闭所有连接。"); /* * connect.myThread.Abort(); * connect.myThread.Join(); * connect.dataReceivedThread.Abort(); * connect.dataReceivedThread.Join(); */ connect.stopServer(); } } }
/// <summary> /// 主进程连接入口 /// /// </summary> public void Connect() { string ipstring = IP.Text; string port = Port.Text; try { connect = new EstablishConnect(IPAddress.Parse(ipstring), Convert.ToInt16(port));//connect是一个具有构造方法的EstablishConnect的实例 connect.socketstart(); FormMessageTextBox.AppendText("\r\n启动监听"); connect.clientChanged += connect_clientChanged; connect.dataReceived += connect_dataReceived; } catch (Exception ex) { Console.WriteLine("出现异常:" + ex.StackTrace); Console.WriteLine("出现异常:" + ex.Message); FormMessageTextBox.AppendText("\r\n出现异常:" + ex.Message); } }