Ejemplo n.º 1
0
 /// <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"), "通讯报错");
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 //调用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"), "通讯报错");
     }
 }
Ejemplo n.º 6
0
        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; }
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 9
0
 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);
     }
 }
Ejemplo n.º 10
0
 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"), "通讯报错");
     }
 }
Ejemplo n.º 11
0
 /// <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);
     }
 }
Ejemplo n.º 12
0
 /// <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);
     }
 }
Ejemplo n.º 13
0
        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";
            }
        }
Ejemplo n.º 14
0
 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);
         }
     }
 }
Ejemplo n.º 15
0
 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));
     }
 }
Ejemplo n.º 16
0
        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);
            }
        }
Ejemplo n.º 17
0
 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);
        }
Ejemplo n.º 19
0
 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;
            }
        }