private static readonly object dealLock = new object(); //处理数据锁 private void _synctcpserver_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null) { try { DeviceData data = new DeviceData(buffer); if (data.Validate) { AddListMsg(client, data.OriginalData + "-校验成功"); DealData(data); } else { AddListMsg(client, string.Format("{0}-校验失败", data.OriginalData)); } DateTime servertime = DateTime.Now; string rtCodeEnd = (servertime.Year % 100).ToString("X2"); rtCodeEnd += (servertime.Month).ToString("X2"); rtCodeEnd += (servertime.Day).ToString("X2"); rtCodeEnd += (servertime.Hour).ToString("X2"); rtCodeEnd += (servertime.Minute).ToString("X2"); rtCodeEnd += (servertime.Year % 100 ^ servertime.Month ^ servertime.Day ^ servertime.Hour ^ servertime.Minute).ToString("X2"); rtCodeEnd = string.Format(rtCode, rtCodeEnd); bool suc = client.SendBS(Encoding.ASCII.GetBytes(rtCodeEnd)); AddListMsg(client, "返回串:" + rtCodeEnd + (suc ? "-发送成功" : "-发送失败")); } catch (Exception ex) { AddListMsg(client, string.Format("收到数据异常:{0}", ex.Message)); LogHelper.Log.Error("接收血糖仪数据失败", ex); } }
/// <summary> /// Evénement déclenché lorsque des données ont été envoyées avec succès vers un client. /// </summary> /// <param name="buffer">Octets envoyés</param> /// <param name="client">Client à qui les données ont été envoyées</param> void iTCPServerDelegate.onTcpSent(byte[] buffer, TCPServerClient client) { Application.Current.Dispatcher.Invoke(new Action(() => { string text = Encoding.UTF8.GetString(buffer); LogEcrire("[" + text + "] => envoyé à [" + client.IpAddress + "]"); })); }
private void _synctcpserver_ShowListMsg(TCPServerClient client, string msg, DateTime time) { if (client != null) { AddListMsg(string.Format("{0} [{1}] -> {2}", time.ToString(DateTimeHelper.FormatTimeStr), client.ID, msg)); } else { AddListMsg(string.Format("{0} -> {1}", time.ToString(DateTimeHelper.FormatTimeStr), msg)); } }
/// <summary> /// Evénement déclenché lorsqu'un client de la liste se déconnecte. /// </summary> /// <param name="server"></param> /// <param name="client"></param> void iTCPServerDelegate.OnDisconnect(TcpServer server, TCPServerClient client) { Application.Current.Dispatcher.Invoke(new Action(() => { this.LogEcrire("Client [" + client.IpAddress + "] déconnecté"); if (_dictClients.ContainsKey(client.IpAddress) == true) { _dictClients.Remove(client.IpAddress); } this.LstClients.ItemsSource = _dictClients.Values; this.EnableButtons(true); })); }
private void BttnSend_Click(object sender, RoutedEventArgs e) { // Envoi du texte de TxtMessage au client sélectionné dans la liste: if (_serveur != null && this.LstClients.SelectedIndex > -1) { // Obtention du client: string cle = (string)this.LstClients.SelectedItem; if (_dictClients.ContainsKey(cle) == true) { TCPServerClient client = _dictClients[cle]; // Envoi des octets vers le client sélectionné: byte[] data = System.Text.Encoding.UTF8.GetBytes(this.TxtMessage.Text); _serveur.Send(data, client); } } }
/// <summary> /// Evénement déclenché lorsque la connection d'un client est acceptée. /// </summary> /// <param name="server"></param> /// <param name="client"></param> void iTCPServerDelegate.OnConnect(TcpServer server, TCPServerClient client) { Application.Current.Dispatcher.Invoke(new Action(() => { this.LogEcrire("Client [" + client.IpAddress + "] connecté"); if (_dictClients.ContainsKey(client.IpAddress) == true) { _dictClients.Remove(client.IpAddress); } _dictClients.Add(client.IpAddress, client); List <string> lst = _dictClients.Keys.ToList <string>(); this.LstClients.ItemsSource = lst; this.EnableButtons(true); })); }
/// <summary> /// 发送消息 到指定的客户端 /// </summary> private void btnSend_Click(object sender, EventArgs e) { TCPServerClient client = lbClientList.SelectedItem as TCPServerClient; if (client != null) { string data = txtCmdTxt.Text.Trim(); List <string> datas = StringPlus.GetStrArray(data, ";"); if (datas.Count < 2) { if (string.IsNullOrWhiteSpace(datas[0])) { UserMessageBox.MessageError("发送内容不能为空!"); return; } bool suc = client.SendString(datas[0]); if (!suc) { UserMessageBox.MessageError("发送失败"); } } else { if (!TmoShare.IsNumricForInt(datas[0])) { UserMessageBox.MessageError("命令ID必须为整数"); return; } bool suc = client.SendCommand(int.Parse(datas[0]), datas[1]); if (!suc) { UserMessageBox.MessageError("发送失败"); } } } else { UserMessageBox.MessageInfo("请选择要发送的客户端"); } }
/// <summary> /// 医生弹框 /// </summary> public static bool SendDocInvoke(string doc_id, int headCode, object paramObjects) { lock (docLock) { if (string.IsNullOrWhiteSpace(doc_id)) { return(false); } if (TCPServer.Instance.Clients.Any(x => x.DocInfo != null && x.DocInfo.doc_id.ToString() == doc_id)) { TCPServerClient client = TCPServer.Instance.Clients.First(x => x.DocInfo != null && x.DocInfo.doc_id.ToString() == doc_id); string strdata = null; if (paramObjects is string) { strdata = paramObjects as string; } byte[] bufferdata = null; if (paramObjects is byte[]) { bufferdata = paramObjects as byte[]; } if (strdata != null) { client.SendCommand(headCode, strdata); } else if (bufferdata != null) { client.SendCommand(headCode, bufferdata); } return(true); } else { return(false); } } }
public void AddListMsg(TCPServerClient client, string msgStr) { string clientID = client == null ? "-" : client.ID; AddListMsg(string.Format("{0} [{1}] -> {2}", DateTimeHelper.TimeNowStr, clientID, msgStr)); }
private void Instance_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null) { if (head == 7777) //心跳包 { string updateStr = CheckUpdate(client.ClientVer); if (updateStr != null) //存在新版本客户端 { string upStr = string.Format("发现新版本客户端,请重启软件更新!\n{0}", updateStr); client.SendString(upStr); } } else if (head == 102) //生日提醒反馈 { string userid = TCPServerClient.ParserString(buffer); Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("birthday_remid_year", DateTime.Now.Year); bool suc = Tmo_FakeEntityManager.Instance.SubmitData(DBOperateType.Update, "tmo_userinfo", "user_id", userid, dic); LogHelper.Log.Info("生日提醒:" + userid + " - " + suc); } else if (head == 200) //用户登录 { strdata = TCPServerClient.ParserString(buffer); if (string.IsNullOrEmpty(strdata)) { client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo() { err_Code = -1 }), false); } else { string[] strarray = strdata.Split(';'); if (strarray.Length < 2) { client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo() { err_Code = -1 }), false); } else { string uid = strarray[0]; string pwd = strarray[1]; DocInfo doc = tmo_docInfoManager.Instance.CheckDocAuth(uid, pwd); if (doc.err_Code != 0) { client.SendCommand(200, TmoShare.SetValueToJson(doc), false); } else { if (TCPServer.Instance.Clients.Any(x => x.DocInfo != null && x.DocInfo != client.DocInfo && x.DocInfo.doc_id == doc.doc_id) ) //存在 证明登录相同用户 { client.SendCommand(200, TmoShare.SetValueToJson(new DocInfo() { err_Code = 3 }), false); } else { client.DocInfo = doc; client.SendCommand(200, TmoShare.SetValueToJson(doc), false); } } } } } }
/// <summary> /// 收到服务器Tcp数据 /// </summary> /// <param name="client"></param> /// <param name="head"></param> /// <param name="buffer"></param> /// <param name="strdata"></param> private void Instance_DataReceived(TCPServerClient client, int head, byte[] buffer, string strdata = null) { if (head == 0) //文字消息 { DXMessageBox.Show(strdata, "消息提醒", true); } else if (head == 100) //电话干预 { if (UCIntervenePhoneResult.IsShow) { return; } strdata = TCPClient.ParserString(buffer); List <string> datas = StringPlus.GetStrArray(strdata, ";"); if (datas.Count == 3) { DXMessageBox.alertClick = (sender, e) => { this.CrossThreadCalls(() => { UCIntervenePhoneResult ucIntervenePhoneResult = new UCIntervenePhoneResult(); ucIntervenePhoneResult.PrimaryKeyValue = datas[2]; DialogResult dr = ucIntervenePhoneResult.ShowDialog(); if (dr == DialogResult.OK) { DXMessageBox.Show("电话干预执行成功!", true); } ucIntervenePhoneResult.Dispose(); }); }; DXMessageBox.Show(datas[1], datas[0], true); } } else if (head == 101) //面访干预 { if (UCInterveneMFResult.IsShow) { return; } strdata = TCPClient.ParserString(buffer); List <string> datas = StringPlus.GetStrArray(strdata, ";"); if (datas.Count == 3) { DXMessageBox.alertClick = (sender, e) => { this.CrossThreadCalls(() => { UCInterveneMFResult ucIntervenePhoneResult = new UCInterveneMFResult(); ucIntervenePhoneResult.PrimaryKeyValue = datas[2]; DialogResult dr = ucIntervenePhoneResult.ShowDialog(); if (dr == DialogResult.OK) { DXMessageBox.Show("面访干预执行成功!", true); } ucIntervenePhoneResult.Dispose(); }); }; DXMessageBox.Show(datas[1], datas[0], true); } } else if (head == 102) //生日提醒 { strdata = TCPClient.ParserString(buffer); List <string> datas = StringPlus.GetStrArray(strdata, ";"); if (datas.Count == 2) { string userid = datas[0]; string name = datas[1]; DXMessageBox.alertClick = (sender, e) => { TCPClient.Instance.SendCommand(102, userid); }; DXMessageBox.Show(string.Format("『生日提醒』今天是客户【{0}】 生日!", name), "系统提示", true); } } else if (head == 103) //消息 { if (frmMain != null && frmMain.Shown) { strdata = TCPClient.ParserString(buffer); DXMessageBox.alertClick += (object sender, AlertClickEventArgs e) => { frmMain.ShowMdiForm <ucPersonPushList>(); }; DXMessageBox.Show("您有" + strdata + "条消息未读,请点击查看!", true); } } }
/// <summary> /// 调用事件 /// </summary> /// <param name="fun"></param> private void InvokeEvent(funCode fun, string docid, string docloginid, object[] args, bool isSuccess, double runSeconds) { DocInfo doc = null; if (!string.IsNullOrWhiteSpace(docid)) { TCPServerClient tsc = TCPServer.Instance.Clients.FirstOrDefault(c => c.DocInfo != null && c.DocInfo.doc_id.ToString() == docid); if (tsc != null) { doc = tsc.DocInfo; } } if (doc == null && !string.IsNullOrWhiteSpace(docloginid)) { TCPServerClient tsc = TCPServer.Instance.Clients.FirstOrDefault(c => c.DocInfo != null && c.DocInfo.doc_loginid == docloginid); if (tsc != null) { doc = tsc.DocInfo; } } string docName = ""; if (doc != null) { docName = doc.doc_name + "(" + doc.doc_id + ")"; } StringBuilder sbArg = new StringBuilder(); if (args.Length > 0) { foreach (object o in args) { if (o != null) { if (o is string) { sbArg.Append(o + " "); } else { sbArg.Append(JsonConvert.SerializeObject(o) + " "); } } } } string msg = $"{DateTime.Now.ToFormatTimeStr()} [{getIPAddress()} ] {docName}-> {fun}({(int) fun})-{(isSuccess ? "TRUE" : "ERROR")}-{runSeconds}"; if (fun != funCode.SaveActionPlan && fun != funCode.InsertAttach && fun != funCode.UpdateAttach) { LogHelper.Log.Info(msg + ":" + sbArg); } else { LogHelper.Log.Info(msg); } OnInvokedMain?.Invoke(msg); }