private Thread CONTEST_Thread; //心跳线程 //连接服务端函数 private void Connect() { try { FreshDate_Timer.Enabled = true; FreshDate_Timer.Interval = 5000; FreshDate_Timer.Tick += FreshDate_Timer_Tick; //连接通信 bool IsConnSuccess = false; using (WaitDialogForm dialog = new WaitDialogForm("正在通信,可能需要数秒,请稍后...", "提示")) { IsConnSuccess = clientserver.Setup(ConnectConfigTool.serverconfig); if (IsConnSuccess) { IsConnSuccess = clientserver.Start(); } } if (!IsConnSuccess) { //this.Text = "AGV调度系统实时显示---连接服务器失败!"; return; } clientserver.RecvSuccess += this.RecvSuccess; //向服务端请求所有车辆当前实时信息 SuperSocketMsg Message = new SuperSocketMsg("", SocketCommand.AllCarsInfo); clientserver.SendMessage(Message); //向服务端发送心跳 CONTEST_Thread = new Thread(SendCONTEST); CONTEST_Thread.IsBackground = true; CONTEST_Thread.Start(); } catch (Exception ex) { MsgBox.ShowError(ex.Message); } }
/// <summary> /// 发送消息 /// </summary> /// <param name="msg"></param> /// <param name="command"></param> public void SendMessage(SuperSocketMsg pack) { try { lock (LockObj) { _clientsocket.Send(pack.ToBuffer()); } } catch (Exception ex) { } }
/// <summary> /// 重新连接调度服务端 /// </summary> private void ReConnect() { try { DateTime now = DateTime.Now; TimeSpan timeSpan = now - UpRecTime; if (timeSpan.TotalSeconds > 3) { if (!this.IsHandleCreated) { return; } //this.Invoke((EventHandler)(delegate //{ // this.Text = "AGV调度系统实时显示---正在重连服务器..."; //})); if (clientserver != null) { clientserver.Exit(); clientserver = null; } clientserver = new TcpClientSever();//客户端通信对象 clientserver.RecvSuccess += this.RecvSuccess; clientserver.Setup(ConnectConfigTool.serverconfig); clientserver.Start(); SuperSocketMsg Message = new SuperSocketMsg("", SocketCommand.AllCarsInfo); clientserver.SendMessage(Message); //向服务端发送心跳 if (this.CONTEST_Thread != null) { CONTEST_Thread.Abort(); } CONTEST_Thread = new Thread(SendCONTEST); CONTEST_Thread.IsBackground = true; CONTEST_Thread.Start(); } else { if (!this.IsHandleCreated) { return; } //this.Invoke((EventHandler)(delegate //{ // this.Text = "AGV调度系统实时显示"; //})); } } catch (Exception ex) { } }
//定时发送心跳包 private void SendCONTEST() { try { while (true) { SuperSocketMsg Message = new SuperSocketMsg("", SocketCommand.CONTEST); clientserver.SendMessage(Message); Thread.Sleep(1000); } } catch { } }