public AlertClient(TcpClient tcpClient) { this.TcpClient = tcpClient; _netStream = tcpClient.GetStream(); //當接收到client端的連線後送出"Ready"訊息給client端,以取得client端送回的ReadyAck訊息 ServerMsg msg = new ServerMsg() { MsgType = "Ready" }; //以JSON 輸出Ready,格式為→{"MsgType":"XXX","MsgContent":"XXX"},MsgType跟MsgContent為固定輸出的key,XXX目前為"Ready" var serverMsg = JsonConvert.SerializeObject(new[] { msg }); var data = System.Text.Encoding.Default.GetBytes(serverMsg); //將訊息送到網路串流上 _netStream.Write(data, 0, data.Length); _bw = new System.ComponentModel.BackgroundWorker(); //當每次發生DoWork事件時,呼叫_bw_DoWork()方法。DoWork事件為當呼叫 RunWorkerAsync 時發生 _bw.DoWork += _bw_DoWork; //是否支援非同步取消. //如果 BackgroundWorker 支援取消,則為 true,否則為 false。 預設值為 false。 _bw.WorkerSupportsCancellation = true; //開始執行背景作業。使用RunWorkerAsync方法,將會觸動DoWork事件 _bw.RunWorkerAsync(); }
//-----------20131209 1220 //送一般訊息給client public void SendMsg(string type, double x, double y, string name) { ServerMsg serverMsg = new ServerMsg() { MsgType = type, MsgContent = "good", Xaxis = x + "", Yaxis = y + "", Name = name, }; var data = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(new[] { serverMsg })); // var data = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(serverMsg)); _netStream.Write(data, 0, data.Length); }
//--------20131 1555 public void SendStopServerMsg() { ServerMsg serverMsg = new ServerMsg() { MsgType = "StopServerMsg", MsgContent = JsonConvert.SerializeObject(new StopServer() { StopServerMsg = "StopServer" }), }; var data = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(serverMsg)); if (_netStream.CanRead) _netStream.Write(data, 0, data.Length); }
//-----------20131209 1220 //送告警訊息給client public void SendAlarmMsg(AlarmMsg alarmMsg) { ServerMsg serverMsg = new ServerMsg() { MsgType = "AlarmMsg", MsgContent = JsonConvert.SerializeObject(alarmMsg) }; var data = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(serverMsg)); _netStream.Write(data, 0, data.Length); }