好友
阅读权限30
听众
最后登录1970-1-1
|
有时候我们个人写软件的时候,自己没有服务器,又想要实现自己软件的远程更新,或者做一些公告信息推送,使用时间限制,白名单,黑名单等这些功能,当然实现的方法有很多,一般都是把信息保存在一个网址内,然后利用爬虫的方式去解决这个问题,今天我也分享一种方法,利用github、gitee等这样的网站实现,这类网站是可以生成网页服务的,其中的md文件是可以用网络直接访问的,就像在本地读一个txt文本一样,只是这个文本放在了git上,那就用网络的方式把信息读下来就行了。
在国内推荐使用gitee(码云),我就用这个演示,因为我对C#比较熟悉,下面我就用C#实现一个软件使用时间限制做法,语言不重要,重要的是方法。
图片:
源码:
[C#] 纯文本查看 复制代码 using System;
using System.IO;
using System.Net;
using System.Text;
namespace Git_Test
{
class Program
{
static void Main(string[] args)
{
try
{
//利用md文件
//例如我的md文件内容:VersionUpdata版本更新,TimeLimit2021-10-12 12:12:13,Notice公告,OtherMessages其它消息
//这里以时间限制为例
//正式使用的时候用加密传输字符,这里只是提供一个思路
string url = "https://keyestore.gitee.io/VerifyTest.md";
string data = GetInfo(url);
Console.WriteLine(data);
Console.WriteLine("\r\n");
//信息使用 , 逗号分隔
string[] dataArr = data.Split(',');
for (int i = 0; i < dataArr.Length; i++)
{
string tempData = null;
//版本更新
if (dataArr[i].Contains("VersionUpdata"))
{
//替换掉VersionUpdata,只留版本更新
tempData = dataArr[i].Replace("VersionUpdata", "");
Console.WriteLine(tempData);
Console.WriteLine("\r\n");
}
//使用时间限制
if (dataArr[i].Contains("TimeLimit"))
{
//替换掉TimeLimit,只留2021-10-12 12:12:13
tempData = dataArr[i].Replace("TimeLimit", "");
Console.WriteLine(tempData);
//这里用网络时间限制程序的运行
string getSysTime = "http://quan.suning.com/getSysTime.do";
//这里返回的是json格式,为了方便,下面直接截取想要的字符串
string timeLimit = GetInfo(getSysTime);
Console.WriteLine(timeLimit);
//提取服务器时间和md里自己的时间,计算时间差,从而限制程序的运行
//截取的字符就是当前时间,格式:2020-05-13 23:23:23
DateTime curTime = Convert.ToDateTime(timeLimit.Split(',')[0].Split('"')[3]);
DateTime setTime = Convert.ToDateTime(tempData);
TimeSpan curTS = new TimeSpan(curTime.Ticks);
TimeSpan setTS = new TimeSpan(setTime.Ticks);
int tsSubDay = setTS.Subtract(curTS).Days;
if (setTS.Subtract(curTS).TotalSeconds > 0)
{
Console.WriteLine("程序还能使用" + tsSubDay + "天");
}
else
{
Console.WriteLine("时间到期,程序停止使用");
Environment.Exit(0); //程序直接退出
}
Console.WriteLine("\r\n");
}
//公告信息
if (dataArr[i].Contains("Notice"))
{ //替换掉Notice,只留公告
tempData = dataArr[i].Replace("Notice", "");
Console.WriteLine(tempData);
Console.WriteLine("\r\n");
}
//其它信息
if (dataArr[i].Contains("OtherMessages"))
{
//替换掉OtherMessages,只留其它消息
tempData = dataArr[i].Replace("OtherMessages", "");
Console.WriteLine(tempData);
Console.WriteLine("\r\n");
}
}
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
Environment.Exit(0); //程序异常,直接退出
}
Console.ReadKey();
}
static string GetInfo(string url)
{
try
{
WebClient webClient = new WebClient();
Stream stream = webClient.OpenRead(url);
MemoryStream ms = new MemoryStream();
byte[] bArr = new byte[1024];
int num = 0;
while ((num = stream.Read(bArr, 0, bArr.Length)) > 0)
{
ms.Write(bArr, 0, num);
}
return Encoding.UTF8.GetString(ms.ToArray());
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
Environment.Exit(0); //获取失败,直接退出程序,无条件的
return null;
}
}
}
}
编译好的程序:
Git Test.rar
(2.89 KB, 下载次数: 20)
PS:怎样利用github、gitee等实现网页服务,请自行百度、谷歌,这里不讨论 |
免费评分
-
参与人数 7 | 吾爱币 +6 |
热心值 +7 |
收起
理由
|
川黔
| + 1 |
+ 1 |
悬赏区望回复https://www.52pojie.cn/thread-1352685-1-1.html |
王星星
| + 1 |
+ 1 |
热心回复! |
ps122
| + 1 |
+ 1 |
谢谢@Thanks! |
liduowu
| + 1 |
+ 1 |
热心回复! |
锋霜
| + 1 |
+ 1 |
热心回复! |
Lucifer_BW
| + 1 |
+ 1 |
热心回复! |
夏末秋始
| |
+ 1 |
谢谢@Thanks! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|