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}"); } } }
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); }
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); }