什么网站可以做棋谱,网站分为,电脑做服务器发布网站,怎么识别网站开发语言原文地址#xff1a;http://www.yxxrui.cn/article/179.shtml 未经许可请勿转载#xff0c;如有疑问#xff0c;请联系作者#xff1a;yxxrui163.com 我遇到的问题#xff1a;公司的网络没有固定的公网IP地址#xff0c;但是需要能够保证的是#xff0c;每次动态分配的I… 原文地址http://www.yxxrui.cn/article/179.shtml 未经许可请勿转载如有疑问请联系作者yxxrui163.com 我遇到的问题公司的网络没有固定的公网IP地址但是需要能够保证的是每次动态分配的IP地址均为独立的公网IP只是每次分配后会在1-2天后更换或者重启路由器后更换为了能够把这个公网IP利用起来大家常用的是使用花生壳之类的软件来操作我使用过花生壳的多款产品挺好的就是有一下几个缺点 1、需要使用花生壳上购买的域名才行或者使用免费的壳域名其丑无比 2、不稳定也很慢 3、限制流量超流量需要收费 4、限制端口特定端口需要收费 5、需要在电脑上运行一个花生壳的软件 解决方案但是为了解决问题我开始摸索自己搞定它公司域名从阿里云上购买阿里云提供云解析技术免费版提供通过api来管理域名的功能当我看到该文档的时候直接就看到了希望解决起来绝对没问题了。首先需要确认一下有两种情况 1、公司服务器直接接入网线这个时候服务器的IP就是公网IP 2、公司服务器链接公司路由器路由器链接网线这个时候路由器上是公网IP而服务器上是局域网IP 第一种情况最简单了不需要设置什么了第二种情况需要到路由器设置界面设置端口转发或者直接将全部端口映射到内网的服务器IP上这样的话访问公网IP的某个端口时相当于访问内网IP的映射端口比如路由器IP为125.120.83.30内网IP为192.168.168.168。可以将路由器中80端口映射到192.168.168.168的80端口上。 到阿里云控制台申请accessKeyId和accessKeySecret用来调用API的为了简单起见先给域名添加一条解析记录这样就不需要在程序里判断该域名是否已创建然后可以直接修改解析记录了。比如我的域名为yxxrui.cn记录值为blog也就是要把子域名blog.yxxrui.cn指向我自己电脑125.120.83.30上。 下边直接贴出代码 using System;
using System.Configuration;
using System.Net;
using System.Text;
using Aliyun.Acs.Alidns.Model.V20150109;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;namespace AliyunDomain
{class Program{private static readonly string RegionIdGetConfig(regionId);private static readonly string AccessKeyIdGetConfig(accessKeyId);private static readonly string AccessKeySecretGetConfig(accessKeySecret);private static string _recordId GetConfig(recordId);private static readonly string Domain GetConfig(domain);private static readonly string Rr GetConfig(rr);private static readonly IClientProfile ClientProfile DefaultProfile.GetProfile(RegionId, AccessKeyId,AccessKeySecret);private static readonly IAcsClient Client new DefaultAcsClient(ClientProfile);static void Main(string[] args){if (string.IsNullOrWhiteSpace(_recordId)){//如果没有获取过那么获取一下然后保存起来_recordId GetRecordId(Domain, Rr);SaveConfig(recordId,_recordId);}if (_recordId ) return;//获取成功并且有变化时string lastIp GetConfig(lastIP);string curIp GetIp();if (!curIp.Equals() !lastIp.Equals(curIp)){var request new UpdateDomainRecordRequest{RecordId _recordId,RR Rr,Type A,Value curIp,TTL 600,Priority 10};Client.DoAction(request);SaveConfig(lastIP, curIp);}}#region 保存配置信息/// summary/// 保存配置信息/// /summary/// param namename/param/// param namevalue/paramprivate static void SaveConfig(string name,string value){var cfa ReadAppConfig();cfa.AppSettings.Settings[name].Value value;cfa.Save();}#endregion#region 获取配置项/// summary/// 获取配置项/// /summary/// param namename/param/// returns/returnsprivate static string GetConfig(string name){var cfa ReadAppConfig();return cfa.AppSettings.Settings[name].Value;}#endregion#region 调用阿里云接口获取域名的唯一记录ID/// summary/// 调用阿里云接口获取域名的唯一记录ID/// /summary/// param namedomain域名/param/// param namerr子域名/param/// returns/returnsprivate static string GetRecordId(string domain,string rr){DescribeDomainRecordsRequest reqq new DescribeDomainRecordsRequest{DomainName domain,RRKeyWord rr};var rss Client.GetAcsResponse(reqq);foreach (var record in rss.DomainRecords){if (record.DomainName.Equals(domain) record.RR.Equals(rr)){return record.RecordId;}}return ;}#endregion#region 获取公网IP/// summary/// 获取当前电脑的真实外网IP地址可以自行修改成稳定的/// /summary/// returns/returnsprivate static string GetIp(){string ip ;try{//获取或设置用于向Internet资源的请求进行身份验证的网络凭据WebClient myWebClient new WebClient { Credentials CredentialCache.DefaultCredentials };//从指定网站下载数据Byte[] pageData myWebClient.DownloadData(http://www.yxxrui.cn/yxxrui_cabangs_api/myip.ashx);//如果获取网站页面采用的是GB2312则使用这句string pageHtml Encoding.Default.GetString(pageData);//如果获取网站页面采用的是UTF-8则使用这句//string pageHtml Encoding.UTF8.GetString(pageData);return pageHtml;}catch (WebException webEx){}return ip;}#endregion#region 获取配置文件private static Configuration _config;private static Configuration ReadAppConfig(){if (_config null){string configPath app.config;_config ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap(){ExeConfigFilename configPath}, ConfigurationUserLevel.None);}//MessageBox.Show(config.AppSettings.Settings[serverIp].Value);return _config;}#endregion}
} app.config文件内容如下 本代码为C#代码建议将项目设置为winform程序不要设置为控制台程序否则每次执行时会弹出黑色的控制台很恶心人的。该代码未实现自动检测和执行如需程序创建计划任务可联系我只是做了以下工作 1、获取当前电脑真实公网IP 2、查看当前IP是否有变化 3、若无变化直接退出若有变化则修改域名解析设置 这些并不能达到实时解析。但可以通过使用window 操作系统中的任务计划程序制定计划每1分钟执行该软件一次即可。 代码与源码压缩包下载地址http://www.yxxrui.cn/article/179.shtml 转载于:https://www.cnblogs.com/yxxrui/p/aliyunddns_update.html