⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostlist.cs

📁 使用C#的UDP组件制作的UDP双机通讯程序
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Xml;
using System.IO;

namespace Th.ChatLib
{
    public class HostInfo
    {
        public string HostName;
        public string HostIP;
        public string NickName;
        public bool Online;

        public void ReadXml(XmlTextReader reader)
        {
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "Host") return;
                if (reader.NodeType != XmlNodeType.Element) continue;
                switch (reader.Name)
                {
                    case "HostName": HostName = reader.ReadString(); break;
                    case "HostIP": HostIP = reader.ReadString(); break;
                    case "NickName": NickName = reader.ReadString(); break;
                }
            }
        }

        public void WriteXml(XmlTextWriter writer)
        {
            writer.WriteStartElement("Host");
            writer.WriteElementString("HostName", HostName);
            writer.WriteElementString("HostIP", HostIP);
            writer.WriteElementString("NickName", NickName);
            writer.WriteEndElement();
        }
    }

    public class HostList : CollectionBase
    {
        public HostInfo this[int index]
        {
            get { return (HostInfo)List[index]; }
            set { List[index] = value; }
        }

        private string m_HostFilePath = string.Empty;

        public HostList(string appPath)
        {
            m_HostFilePath = Path.Combine(appPath, "host.db");
            ReadXml();
        }

        public HostInfo GetHostInfoByIP(string ip)
        {
            foreach (HostInfo host in List)
            {
                if (host.HostIP == ip) return host;
            }
            return null;
        }

        private void ReadXml()
        {
            List.Clear();
            if (File.Exists(m_HostFilePath))
            {
                XmlTextReader reader = new XmlTextReader(m_HostFilePath);
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Host")
                    {
                        HostInfo host = new HostInfo();
                        host.ReadXml(reader);
                        List.Add(host);
                    }
                }
                reader.Close();
            }
        }

        public void WriteXml()
        {
            XmlTextWriter writer = new XmlTextWriter(m_HostFilePath, Encoding.Unicode);
            writer.Formatting = Formatting.Indented;
            writer.WriteStartDocument(false);
            writer.WriteDocType("HostList", null, null, null);
            writer.WriteStartElement("HostList");
            foreach (HostInfo host in List)
            {
                host.WriteXml(writer);
            }
            writer.WriteEndElement();
            writer.Flush();
            writer.Close();
        }

        public void Add(HostInfo host)
        {
            List.Add(host);
        }

        public void Remove(HostInfo host)
        {
            List.Remove(host);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -