static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LogHelper.GetInstance().RunMonitor();
if (GetInternetTime("time.nist.gov", out DateTime dt, out string errMsg))
{
if (dt < DateTime.Parse("2024-12-30") /*DateTime.MaxValue*/)
{
Application.Run(new FormSoftwareAuthorization());
}
else
{
MessageBox.Show("授权软件已过期!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
MessageBox.Show("请链接互联网进行授权操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch
{
System.Environment.Exit(0);
}
}
public static bool GetInternetTime(string url, out DateTime dt, out string errMsg)
{
dt = DateTime.MinValue;
var startDt = DateTime.Now;
var port = 13;
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { ReceiveTimeout = 2000 };
try
{
LogHelper.Error($"IPv4 支持是否可用并且已启用:{Socket.OSSupportsIPv4}");
LogHelper.Error($"IPv6 支持是否可用并且已启用:{Socket.OSSupportsIPv6}");
var iphostinfo = Dns.GetHostEntry(url);
LogHelper.Error(iphostinfo.HostName);
foreach (var ipinfo in iphostinfo.Aliases)
{
LogHelper.Error($"获取或设置与主机关联的别名列表:{ipinfo}");
}
foreach (var item in iphostinfo.AddressList)
{
LogHelper.Error($"获取或设置与主机关联的 IP 地址列表:{item.ToString()} ipv6地址:{item.IsIPv6Teredo} {item.IsIPv6SiteLocal} {item.IsIPv6LinkLocal} ");
}
var ip = iphostinfo.AddressList[0];
if (ip.ToString().Contains(':'))
{
socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) { ReceiveTimeout = 2000 };
}
var ipe = new IPEndPoint(ip, port);
LogHelper.Error($"软件连接IP:{ip.ToString()}");
var iar = socket.BeginConnect(ipe, null, null);
if (!iar.AsyncWaitHandle.WaitOne(5000))
{
LogHelper.Error($"软件连接IP连接超时:{ip.ToString()}");
errMsg = "连接超时" + url;
return false;
}
var recvBuffer = new byte[1024];
var sb = new StringBuilder();
var myE = Encoding.UTF8;
int nBytes;
while ((nBytes = socket.Receive(recvBuffer, 0, 1024, SocketFlags.None)) > 0)
{
sb.Append(myE.GetString(recvBuffer, 0, nBytes));
}
var o = sb.ToString().Split(' ');
TimeSpan ts = DateTime.Now - startDt;
var setDt = Convert.ToDateTime(o[1] + " " + o[2]).Subtract(-ts); // 减去中途消耗的时间
dt = setDt.ToLocalTime();
errMsg = "";
return true;
}
catch (Exception ex)
{
LogHelper.Error($"软件连接互联网出错:{ex.ToString()}");
errMsg = ex.Message;
return false;
}
finally
{
socket.Close();
}
}
}
09-27
467
467
09-05
1062
1062

被折叠的 条评论
为什么被折叠?



