/// <summary> /// 获取列表 /// 例如:p1 n个ip+port+available /// </summary> /// <returns></returns> public List <ServerClientGroupStatusItem> GetClientStatusGroup() { if (_sclients == null || _sclients.Count <= 0) { return(null); } lock (_sclients) { List <string> group_names = new List <string>(); foreach (var v in _sclients) { string name = v.Value.SenderName ?? ""; if (!group_names.Contains(name)) { group_names.Add(name); } } List <ServerClientGroupStatusItem> groups = new List <ServerClientGroupStatusItem>(); foreach (var v in group_names) { ServerClientGroupStatusItem group = new ServerClientGroupStatusItem(); group.ClientType = v; group.StatusGroup = new List <ServerClientStatusItem>(); foreach (var client in _sclients) { string name = client.Value.SenderName ?? ""; string ep = client.Value.ServerClient.RemoteEndPoint.ToString(); int start_digit_index = 0; for (; start_digit_index < ep.Length; start_digit_index++) { if (char.IsDigit(ep, start_digit_index)) { break; } } if (start_digit_index >= ep.Length) { return(null); } ep = ep.Substring(start_digit_index); string[] ss = ep.Split(':'); if (name == v) { ServerClientStatusItem scsi = new ServerClientStatusItem(); scsi.Available = client.Value.Available; scsi.IP = ss[0].Trim(); scsi.Port = int.Parse(ss[1]); group.StatusGroup.Add(scsi); } } } return(groups); } }
/// <summary> /// 获取列表 /// 例如:p1 n个ip+port+available /// </summary> /// <returns></returns> public List<ServerClientGroupStatusItem> GetClientStatusGroup() { if (_sclients == null || _sclients.Count <= 0) return null; lock (_sclients) { List<string> group_names = new List<string>(); foreach (var v in _sclients) { string name = v.Value.SenderName ?? ""; if (!group_names.Contains(name)) group_names.Add(name); } List<ServerClientGroupStatusItem> groups = new List<ServerClientGroupStatusItem>(); foreach (var v in group_names) { ServerClientGroupStatusItem group = new ServerClientGroupStatusItem(); group.ClientType = v; group.StatusGroup = new List<ServerClientStatusItem>(); foreach (var client in _sclients) { string name = client.Value.SenderName ?? ""; string ep = client.Value.ServerClient.RemoteEndPoint.ToString(); int start_digit_index = 0; for (; start_digit_index < ep.Length; start_digit_index++) { if (char.IsDigit(ep, start_digit_index)) break; } if (start_digit_index >= ep.Length) return null; ep = ep.Substring(start_digit_index); string[] ss = ep.Split(':'); if (name == v) { ServerClientStatusItem scsi = new ServerClientStatusItem(); scsi.Available = client.Value.Available; scsi.IP = ss[0].Trim(); scsi.Port = int.Parse(ss[1]); group.StatusGroup.Add(scsi); } } } return groups; } }