Beispiel #1
0
 /// <summary>
 /// 根据单位编号单独发送一条消息
 /// </summary>
 /// <param name="message"></param>
 /// <param name="UnitCode"></param>
 public void BroadCastMessage(string msg, string UnitCode)
 {
     try
     {
         ScsTextMessage message = new ScsTextMessage()
         {
             Text = msg
         };
         ServerClient sc = OnlineClents.Where(p => p.UnitCode == UnitCode).ToList().Count > 0 ? OnlineClents.Where(p => p.UnitCode == UnitCode).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);
                     break;
                 }
             }
             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", "SendMessage"), "通讯报错");
     }
 }
Beispiel #2
0
        /// <summary>
        /// //客户端已连接
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Server_ClientConnected(object sender, ServerClientEventArgs e)
        {
            //try
            //{
            ServerClient Client = new ServerClient(this);

            Client.dtClientConnTime   = DateTime.Now;
            Client.strClientIP        = ((ScsTcpEndPoint)e.Client.RemoteEndPoint).IpAddress;
            Client.strClientPort      = ((ScsTcpEndPoint)e.Client.RemoteEndPoint).TcpPort.ToString();
            Client.intClientID        = e.Client.ClientId;
            Client.Status             = NetStatus.Connected;
            e.Client.MessageReceived += new EventHandler <MessageEventArgs>(Client.MessageReceived);

            OnlineClentsLock.EnterWriteLock();
            try
            {
                OnlineClents.Add(Client);
            }
            finally
            {
                OnlineClentsLock.ExitWriteLock();
            }
            OnServerConnectedClientChanged();
        }
 public ThreeFieldMsgHandler(ServerClient client)
 {
     Client = client;
 }