问题描述:由于比来项目需要使用Mac地点与注册码进行加密措置惩罚惩罚,但是又因为Web措施的局限性不能获取客户端电脑系统信息,固然IE浏览器有一个activex控件他是可以通过Js在前端代码中直接获取的,局限性太小放弃。我的实现要领是通过windows处事嵌套一个HttpService处事实现。本人低级菜鸟但愿有大佬看到能有多多指教,同时也记录下来加深本身的印象。概略实现法式如下
一 创建一个winform项目
二 在根目录下创建一个windowsService处事名称随意,,本文中取得是Service1
public partial class Service1 : ServiceBase
{
System.Threading.Timer recordTimer;
public Service1()
{
InitializeComponent();
}
/// <summary>
/// 处事开启
/// </summary>
/// <param></param>
protected override void OnStart(string[] args)
{
//获取Mac地点与注册码本地接口Http接口嵌入也可在增加其他业务代码
HttpServer httpServer;
if (args.GetLength(0) > 0)
{
httpServer = new MyHttpServer(Convert.ToInt16(args[0]));
}
else
{
//日志文件记录
FileOpetation.SaveRecord(string.Format(@"当前记录时间:{0},状况:启动处事!", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
//爆的本机端口尽量用大的数字不要使用1433一下数字作为端口
httpServer = new MyHttpServer(8888);
}
//操纵线程要领
Thread thread = new Thread(new ThreadStart(httpServer.listen));
thread.Start();
}
//遏制处事
protected override void OnStop()
{
if (recordTimer != null)
{
recordTimer.Dispose();
}
}
三 创建一个处事类 实现.net框架的类HttpListener。以下为简介代码返回数据格局需要自行措置惩罚惩罚此外会存在一个跨域问题,代码包中有注解
public class MyHttpServer : HttpServer { public MyHttpServer(int port) : base(port) { } public override void handleGETRequest(HttpProcessor p) { Console.WriteLine("request: {0}", p.http_url); p.writeSuccess(); p.outputStream.WriteLine("<html><body><h1>test server</h1>"); p.outputStream.WriteLine("Current Time: " + DateTime.Now.ToString()); p.outputStream.WriteLine("url : {0}", p.http_url); p.outputStream.WriteLine("<form method=post action=http://www.mamicode.com/form>"); p.outputStream.WriteLine("<input type=text name=foo value=foovalue>"); p.outputStream.WriteLine("<input type=submit name=bar value=barvalue>"); p.outputStream.WriteLine("</form>"); } public override void handlePOSTRequest(HttpProcessor p, StreamReader inputData) { Console.WriteLine("POST request: {0}", p.http_url); string data = inputData.ReadToEnd(); p.outputStream.WriteLine("<html><body><h1>test server</h1>"); p.outputStream.WriteLine("<a href=http://www.mamicode.com/test>return</a><p>"); p.outputStream.WriteLine("postbody: <pre>{0}</pre>", data); } }四 添加一个安置措施类
概略法式已经完成了剩下就是打包颁布 源码下载链接 https://files.cnblogs.com/files/pengdakun/MyFirstWindowsService.rar
打包好措施下载链接 https://files.cnblogs.com/files/pengdakun/%E6%B5%8B%E8%AF%95%E6%96%87%E4%BB%B6.rar
标签:
原文地点:https://www.cnblogs.com/pengdakun/p/8902393.html