コード例 #1
0
        private async void SaveConfigFile(string fullName)
        {
            Config = new NetConnectConfigEntity
            {
                Host         = "127.0.0.1",
                ProtocalType = ProtocalType.Tcp,
                IsCompress   = false,
                IsEncrypt    = false,
                Port         = 50000,
                HttpType     = "http",
                Desc         = "客户端连接服务端的IP端口配置,TCP ProtocalType = 1, KCP ProtocalType = 2, WebSocket ProtocalType = 3。",
            };

            using (var fileStream = new FileStream(fullName, FileMode.OpenOrCreate))
            {
                using (var sr = new StreamWriter(fileStream))
                {
                    var json = Config.ToJson();
                    await sr.WriteAsync(json);

                    await sr.FlushAsync();

                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"外网连接信息未配置,系统会自动生成模板:{fullName}");
                }
            }
        }
コード例 #2
0
        public static IPEndPoint GetIPEndPoint(NetConnectConfigEntity config)
        {
            const string ipOrDomainRegex = @"^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$";
            const string ipRegex         = @"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)";

            var regex   = new Regex(ipOrDomainRegex);
            var isMatch = regex.IsMatch(config.Host);

            if (!isMatch)
            {
                throw new ComponentException("连接服务端主机IP地址或者域名配置错误,请检查OutNetConfig.json文件配置。");
            }

            regex = new Regex(ipRegex);
            var       isIpadress = regex.IsMatch(config.Host);
            IPAddress ipAddress  = null;

            if (isIpadress)
            {
                ipAddress = IPAddress.Parse(config.Host);
            }
            else
            {
                var hostInfo = Dns.GetHostEntry(config.Host);
                ipAddress = hostInfo.AddressList[0];
            }
            var endPoint = new IPEndPoint(ipAddress, config.Port);

            return(endPoint);
        }
コード例 #3
0
        private bool ReadConfigFile(string path)
        {
            using (var fileStream = new FileStream(path, FileMode.OpenOrCreate))
            {
                using (var sr = new StreamReader(fileStream))
                {
                    var json = sr.ReadToEnd();
                    if (string.IsNullOrEmpty(json))
                    {
                        return(false);
                    }

                    Config = BsonSerializer.Deserialize <NetConnectConfigEntity>(json);
                }
            }

            if (Config == null || string.IsNullOrWhiteSpace(Config.Host))
            {
                return(false);
            }

            return(true);
        }