/// <summary> /// 根据单位类型广播消息 /// </summary> /// <param name="message"></param> /// <param name="type"></param> public void BroadCastMessage(string msg, ClientType type) { try { ScsTextMessage message = new ScsTextMessage() { Text = msg }; ServerClient sc = OnlineClents.Where(p => p.UnitType == type).ToList().Count > 0 ? OnlineClents.Where(p => p.UnitType == type).ToList()[0] : null; if (sc == null) { return; } foreach (var client in this.ScsServer.Clients.GetAllItems()) { try { if (client.CommunicationState == CommunicationStates.Connected && client.ClientId == sc.intClientID) { client.SendMessage(message); } } catch (Exception e) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, "发送消息失败并且手动断开连接" + e.Message.ToString(), new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "通讯报错"); client.Disconnect(); } } LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Info, "Broadcast message :" + message.Text, new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "SendMsg"); } catch (Exception ex) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, ex.Message.ToString(), new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "通讯报错"); } }
/// <summary> /// 发送派车信息给route server /// </summary> /// <param name="sci"></param> public void SendCarInfo(SendCarInfo sci) { Hashtable ht = GetSendCarInfoHashtableByModel(sci); ScsTextMessage message = new ScsTextMessage(JSON.Encode(ht)); SendMessage(message); }
public async void sendMsgstoAll(string msg) { foreach (DataGridViewRow row in dgv_svr.Rows) { var message = new ScsTextMessage(msg); Task bulkMsg = Task.Run(() => server.Clients[int.Parse(row.Cells[5].Value.ToString())].SendMessage(message)); if (msg == "RD_COPY") { await Task.Delay(int.Parse(data["MW"]["RD_TIME"])); } if (msg == "UPDATE_AVAILABLE") { await Task.Delay(int.Parse(data["MW"]["UPDATE_TIME"])); } if (msg == "RESTART") { await Task.Delay(30000); } if (msg == "TEST_MSG") { await Task.Delay(120000); } if (msg == "CSV_COPY") { await Task.Delay(180000); } if (msg == "LOG_COPY") { await Task.Delay(180000); } } }
public byte[] GetBytes(IScsMessage message) { // Serialize the message to a byte array ScsTextMessage textMessage = message as ScsTextMessage; return(textMessage != null?Encoding.Default.GetBytes(textMessage.Text) : ((ScsRawDataMessage)message).MessageData); }
//调用TcpServer发送消息 #region /// <summary> /// 全频道广播消息 /// </summary> /// <param name="message"></param> public void BroadCastMessage(string msg) { try { ScsTextMessage message = new ScsTextMessage() { Text = msg }; foreach (var client in this.ScsServer.Clients.GetAllItems()) { try { if (client.CommunicationState == CommunicationStates.Connected) { client.SendMessage(message); } } catch (Exception e) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, "发送消息失败并且手动断开连接" + e.Message.ToString(), new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "通讯报错"); client.Disconnect(); } } LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Info, "Broadcast message :" + message.Text, new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "SendMsg"); } catch (Exception ex) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, ex.Message.ToString(), new LogUtility.RunningPlace("ServerClient", "BroadCastMessage"), "通讯报错"); } }
public void HandleMsg(ScsTextMessage Message) { try { LogHelper.WriteSevNetMsgLog("Recieve route server message:" + Message.ToString()); Hashtable htMessage = (Hashtable)JSON.Decode(Message.Text); switch (htMessage["messageName"].ToString()) { case "LoginServerResp": DealLoginServerResp(htMessage); break; case "CallInfo": DealCallInfo(htMessage); break; case "QualityComment": DealQualityComment(htMessage); break; default: break; } } catch (Exception ex) { throw ex; } }
public void Message_Handler(object sender, MessageEventArgs Args) { try { ScsTextMessage Message = (ScsTextMessage)Args.Message; string strOneMsg = FilterNetMsg(Message.Text); if (strOneMsg != string.Empty) { string strMessageId = strOneMsg.Substring(1, 4); if (strMessageId != "8000") { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Info, "Recieved message Unitcode is " + Client.UnitCode + " Port is " + Client.TFServer.ServerPort.ToString() + ":" + strOneMsg, new LogUtility.RunningPlace("ThreeFieldMsgHandler", "Message_Handler"), "RecvMsg"); } switch (strMessageId) { case "8000": Handle8000Message(strOneMsg); break; case "2051": Handle2051Message(strOneMsg); break; default: break; } } } catch (Exception ex) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, ex.Message.ToString(), new LogUtility.RunningPlace("ThreeFieldMsgHandler", "Message_Handler"), "业务逻辑错误"); } }
private void ServerOnNewMessage(ScsTextMessage pMessage, IScsServerClient pClient) { try { if (this.LogAll == true) { InputHiveServerForm.LoggingQueue.Enqueue(String.Format( "{0} Received message from: {1} - {2} ", DateTime.Now, this.Server.FindClient(pClient.ClientId), pMessage.Text)); } string[] lvSplit = pMessage.Text.Split(':'); switch (lvSplit[0].ToLower()) { case "username": if (this.Server.FindClient(lvSplit[1]) == null && lvSplit[1].ToLower() != "server" && !String.IsNullOrWhiteSpace(lvSplit[1])) { this.Server.FindClient(pClient.ClientId).Username = lvSplit[1]; pClient.SendMessage(new ScsTextMessage("username:ok")); this.Server.ChatToAllClients(lvSplit[1] + " joined the server."); InputHiveServerForm.LoggingQueue.Enqueue(String.Format("{0} {1} joined the server.", DateTime.Now, lvSplit[1])); if (this.UpdateClientEvent != null) { this.UpdateClientEvent.Invoke(); } this.UpdateKeyListToClient(this.Server.FindClient(pClient.ClientId), this.DefaultAllowedKeys.ToArray()); this.Server.FindClient(pClient.ClientId).AllowedKeys = new List <Keys>(this.DefaultAllowedKeys); } else { pClient.SendMessage(new ScsTextMessage("username:error")); } break; case "chat": this.Server.ChatToAllClients(string.Format("{0} {1}: {2}", DateTime.Now, this.Server.FindClient(pClient.ClientId).Username, pMessage.Text.Remove(0, 5))); break; case "key": this.SendKey((Keys)Convert.ToInt32(lvSplit[1].Trim()), this.Server.FindClient(pClient.ClientId)); break; default: throw new Exception(); } } catch (Exception lvException) { InputHiveServerForm.LoggingQueue.Enqueue(String.Format( "{0} !-!-! ERROR: Error processing message: {1} from {2}\t\nERROR MESSAGE: {3}", DateTime.Now, pMessage.Text, this.Server.FindClient(pClient.ClientId), lvException.Message)); //throw new Exception("Error processing message:\n" + pMessage.Text + "\n\n" + lvException.Message); } }
public void SendMessage(ScsTextMessage message) { try { Routeserver.ScsServer.Clients[this.intClientID].SendMessage(message); LogHelper.WriteNetMsgLog("Send message Unitcode is " + UnitCode + " Port is " + Routeserver.ServerPort.ToString() + ":" + message.Text); } catch (Exception ex) { LogHelper.WriteLog("", ex); } }
public void SendMessage(ScsTextMessage message) { try { TFServer.ScsServer.Clients[this.intClientID].SendMessage(message); LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Info, "Send message Unitcode is " + UnitCode + " Port is " + TFServer.ServerPort.ToString() + ":" + message.Text, new LogUtility.RunningPlace("ServerClient", "SendMessage"), "SendMsg"); } catch (Exception ex) { LogUtility.DataLog.WriteLog(LogUtility.LogLevel.Error, ex.Message.ToString(), new LogUtility.RunningPlace("ServerClient", "SendMessage"), "通讯报错"); } }
/// <summary> /// 发给消息给Route Server /// </summary> /// <param name="strMsg"></param> public void SendMessage(ScsTextMessage Message) { try { if (null != tcpClient) { tcpClient.SendMessage(Message); LogHelper.WriteSevNetMsgLog("Send route server message" + Message.Text); } } catch (Exception ex) { LogHelper.WriteLog("", ex); } }
/// <summary> /// 发送登录消息 /// </summary> public void SendLoginServerMsg() { try { Hashtable htLogin = new Hashtable(); htLogin.Add("messageName", "LoginServer"); htLogin.Add("unitCode", SysParameters.UnitCode); ScsTextMessage message = new ScsTextMessage(); message.Text = JSON.Encode(htLogin); Server.SendMessage(message); } catch (Exception ex) { LogHelper.WriteLog("", ex); } }
public void sendMsg(string msg) { string msgtosend = init_cls.PCname() + " " + init_cls.GetLocalIPAddress() + " " + init_cls.GetMWVer() + " " + msg + " "; ScsTextMessage clientMsg = new ScsTextMessage(msgtosend); try { client.SendMessage(clientMsg); lbl_serv.ForeColor = Color.Green; lbl_serv.Text = "Connected"; } catch { //MessageBox.Show("Client not connected to server! Please check the server status", "Error connection"); lbl_serv.ForeColor = Color.Red; lbl_serv.Text = "Not Connected"; } }
public void reconn() { if (client.CommunicationState.ToString() == "Disconnected") { try { string msgtosend = init_cls.PCname() + " " + init_cls.GetLocalIPAddress() + " " + init_cls.GetMWVer() + " CONNECTED "; ScsTextMessage clientMsg = new ScsTextMessage(msgtosend); client.Connect(); client.SendMessage(clientMsg); lbl_serv.ForeColor = Color.Green; lbl_serv.Text = "Connected"; } catch (Exception exp) { return; //MessageBox.Show(e.Message); } } }
private void Client_MessageReceived(object sender, MessageEventArgs e) { try { ScsTextMessage lvMessage = e.Message as ScsTextMessage; //Server only accepts text messages if (lvMessage == null) { return; } IScsServerClient lvClient = (IScsServerClient)sender; if (this.NewMessage != null) { this.NewMessage.Invoke(lvMessage, lvClient); } } catch (Exception lvEx) { InputHiveServerForm.LoggingQueue.Enqueue(String.Format( "ERROR: Client_MessageReceived: " + lvEx.Message)); } }
public void Message_Handler(object sender, MessageEventArgs Args) { try { ScsTextMessage Message = (ScsTextMessage)Args.Message; LogHelper.WriteNetMsgLog("Recieved message Unitcode is " + Client.UnitCode + " Port is " + Client.Routeserver.ServerPort.ToString() + ":" + Message.Text); Hashtable htMessage = (Hashtable)JSON.Decode(Message.Text); switch (htMessage["messageName"].ToString()) { case "LoginServer": HandleLoginServer(htMessage); break; case "SendCarInfo": HandleSendCarInfo(htMessage); break; case "CarStep": HandleCarStep(htMessage); break; case "CarLocation": HandleCarLocation(htMessage); break; case "ServiceQualityInfo": HandleServiceQualityInfo(htMessage); break; default: break; } } catch (Exception ex) { LogHelper.WriteLog("", ex); } }
private void RefreshConn_Elapsed(object sender, ElapsedEventArgs e) { lbl_mgr_stat.BeginInvoke(new Action(() => lbl_mgr_stat.Text = "Reconnecting to server")); if (client.CommunicationState.ToString() == "Disconnected") { try { string msgtosend = init_cls.PCname() + " " + init_cls.GetLocalIPAddress() + " " + init_cls.GetMWVer() + " CONNECTED "; ScsTextMessage clientMsg = new ScsTextMessage(msgtosend); client.Connect(); client.SendMessage(clientMsg); lbl_serv.BeginInvoke(new Action(() => lbl_serv.ForeColor = Color.Green)); lbl_serv.BeginInvoke(new Action(() => lbl_serv.Text = "Connected")); refreshConn.Enabled = false; } catch (Exception exp) { lbl_mgr_stat.BeginInvoke(new Action(() => lbl_mgr_stat.Text = "")); return; //MessageBox.Show(e.Message); } } lbl_mgr_stat.BeginInvoke(new Action(() => lbl_mgr_stat.Text = "")); }
protected override IScsMessage DeserializeMessage(byte[] bytes) { IScsMessage retMsg = null; string msgId = null; byte [] bytMsgId = new byte [ConstData.tokenStringLength]; Buffer.BlockCopy(bytes, 1, bytMsgId, 0, ConstData.tokenStringLength); msgId = Encoding.ASCII.GetString(bytMsgId); if (msgId.Equals(ConstData.emptyGuidString)) { msgId = null; } string replyMsgId = null; byte [] bytReplyMsgId = new byte [ConstData.tokenStringLength]; Buffer.BlockCopy(bytes, 1 + ConstData.tokenStringLength, bytReplyMsgId, 0, ConstData.tokenStringLength); replyMsgId = Encoding.ASCII.GetString(bytReplyMsgId); if (replyMsgId.Equals(ConstData.emptyGuidString)) { replyMsgId = null; } byte msgTypeCodec = bytes[0]; switch ((int)msgTypeCodec) { case ((int)MsgType.ScsRaw_Msg): { if (0 < bytes.Length - (1 + ConstData.tokenStringLength * 2)) { byte[] content = new byte[bytes.Length - (1 + ConstData.tokenStringLength * 2)]; Buffer.BlockCopy(bytes, 1 + ConstData.tokenStringLength * 2, content, 0, content.Length); retMsg = new ScsRawDataMessage(content); } else { retMsg = new ScsRawDataMessage(); } ((ScsRawDataMessage)retMsg).MessageId = msgId; ((ScsRawDataMessage)retMsg).RepliedMessageId = replyMsgId; break; } case ((int)MsgType.ScsText_Msg): { if (0 < bytes.Length - (1 + ConstData.tokenStringLength * 2)) { byte[] bytContent = new byte[bytes.Length - (1 + ConstData.tokenStringLength * 2)]; Buffer.BlockCopy(bytes, 1 + ConstData.tokenStringLength * 2, bytContent, 0, bytContent.Length); string content = Encoding.UTF8.GetString(bytContent); retMsg = new ScsTextMessage(content); } else { retMsg = new ScsTextMessage(); } ((ScsTextMessage)retMsg).MessageId = msgId; ((ScsTextMessage)retMsg).RepliedMessageId = replyMsgId; break; } case ((int)MsgType.ScsPing_Msg): { // N / A retMsg = new ScsPingMessage(); ((ScsPingMessage)retMsg).MessageId = msgId; ((ScsPingMessage)retMsg).RepliedMessageId = replyMsgId; break; } default: { throw new NotImplementedException(); } } return(retMsg); }
private void processBulkMsgs(IScsServerClient clients, ScsTextMessage msg) { clients.SendMessage(msg); }
/// <summary> /// Event invoked from HiveCommunicationClient Client /// </summary> /// <param name="pMessage"></param> private void ClientOnNewMessage(ScsTextMessage pMessage) { string[] lvSplit = pMessage.Text.Split(':'); switch (lvSplit[0].ToLower()) { case "username": if (lvSplit[1].ToLower() == "ok") { this.Client.UsernameConfirmed = true; if (this.OnUsernameConfirmed != null) { this.OnUsernameConfirmed.Invoke(); } } else if (lvSplit[1].ToLower() == "error") { InputHiveClientForm.ShowMessageBox("Username is not valid.", "Username is not valid", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; case "chat": string lvText = pMessage.Text.Remove(0, 5); InputHiveClientForm.ChatQueue.Enqueue(lvText); break; case "full": this.Client.Disconnect(); InputHiveClientForm.ShowMessageBox("The server is full.", "Server is full", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; case "notallow": this.Client.Disconnect(); InputHiveClientForm.ShowMessageBox("The server is not allowing any new clients.", "Not allowed to join", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; case "kick": this.Client.Disconnect(); InputHiveClientForm.ShowMessageBox("You have been kicked from the server.", "Kicked", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; case "ban": this.Client.Disconnect(); InputHiveClientForm.ShowMessageBox("You have been banned from the server.", "Banned", MessageBoxButtons.OK, MessageBoxIcon.Warning); break; case "keylist": this.AddNewKeyList(pMessage.Text.Remove(0, 8)); InputHiveClientForm.LoggingQueue.Enqueue(String.Format( "{0} Received keylist update.", DateTime.Now)); break; case "sendnotallowed": InputHiveClientForm.LoggingQueue.Enqueue(String.Format( "{0} failed to send key. Not allowed to send keys.", DateTime.Now)); break; case "sendnotallowedkey": InputHiveClientForm.LoggingQueue.Enqueue(String.Format( "{0} failed to send key. Not allowed to send this key.", DateTime.Now)); break; case "sendnotallowedcooldown": InputHiveClientForm.LoggingQueue.Enqueue(String.Format( "{0} failed to send key. Not allowed to send yet.", DateTime.Now)); break; case "nosend": InputHiveClientForm.LoggingQueue.Enqueue(String.Format( "{0} failed to send key. Server not allowing keys to be sent.", DateTime.Now)); break; case "screenshot": Image image = StaticHelper.Base64ToImage(lvSplit[1]); this._form.UpdateScreenShot(image); break; default: InputHiveClientForm.ShowMessageBox("Unknown message:\n" + pMessage.Text, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } }