/// <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"), "通讯报错"); } }
/// <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; }