Example #1
0
        /// <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;
            }
        }