fajiao 1 year ago
parent
commit
4331d986be
  1. 439
      EC.Util/Common/DateUnit.cs
  2. 367
      EC.Util/Common/FileUnit.cs
  3. 67
      EC.Util/Common/LogUnit.cs
  4. 1
      EC.Util/EC.Util.csproj
  5. 39
      EC.Util/Net/APICallBack.cs
  6. 362
      EC.Util/Net/HttpServer.cs
  7. 657
      EC.Util/Net/NetUnit.cs
  8. 3
      JiLinApp/JiLinApp.csproj

439
EC.Util/Common/DateUnit.cs

@ -0,0 +1,439 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/*******************************************************/
/*Project:
Module :
Description :
Date : 2008-6-3 15:09:12
Create : Lxc
Update : 2015-12-31
TODO : */
/*******************************************************/
namespace System
{
/// <summary>
/// 日期时间操作单元
/// </summary>
public partial class DateUnit
{
/// <summary>
/// 1970-1-1
/// </summary>
public static DateTime InitDate()
{
return new DateTime(1970, 1, 1);
}
/// <summary>
/// 默认当前日期
/// </summary>
public static DateTime DefDate()
{
return DateTime.Now;
}
/// <summary>
/// 格式化后的当前日期
/// </summary>
public static string DefFormatDate()
{
return FormatDate(DefDate());
}
/// <summary>
///格式化当前时间
/// </summary>
public static string DefFormatDateTime()
{
return FormatDateTime(DefDate());
}
/// <summary>
/// 格式化后的 当前月1号 日期格式yyyy-MM-01
/// </summary>
public static string DefMonthBegFormat()
{
return DefDate().ToString("yyyy-MM-01");
}
/// <summary>
/// 字符串格式->格式化为当前日期
/// </summary>
/// <param name="Indate"></param>
/// <returns></returns>
public static string FormatDate(string Indate)
{
DateTime nowDate = DefDate();
if (Indate != null && Indate != "")
{
nowDate = ToDate(Indate);
}
return FormatDate(nowDate);
}
/// <summary>
/// 格式化为 日期格式yyyy-MM-dd
/// </summary>
/// <param name="Indate"></param>
/// <returns></returns>
public static string FormatDate(DateTime Indate)
{
if (!Indate.Equals(null))
{
return Indate.ToString("yyyy-MM-dd");
}
else
{
return DefFormatDate();
}
}
/// <summary>
/// 格式化为 日期时间格式yyyy-MM-dd HH:mm:ss
/// </summary>
/// <param name="Indate"></param>
/// <returns></returns>
public static string FormatDateTime(DateTime Indate)
{
if (!Indate.Equals(null))
{
return Indate.ToString("yyyy-MM-dd HH:mm:ss");
}
else
{
return DefFormatDate();
}
}
/// <summary>
/// 格式化时间 毫秒
/// </summary>
/// <param name="Indate"></param>
/// <returns></returns>
public static string FormatDateTimefff(DateTime Indate)
{
if (!Indate.Equals(null))
{
return Indate.ToString("yyyy-MM-dd HH:mm:ss fff");
}
else
{
return DefFormatDate();
}
}
#region 时间函数
/// <summary>
/// 是不是时间格式
/// </summary>
/// <param name="datetm"></param>
/// <returns></returns>
public static bool IsDate(string datetm)
{
bool result = false;
try
{
DateTime dateTime = Convert.ToDateTime(datetm);
result = true;
}
catch
{
result = false;
}
return result;
}
/// <summary>
/// 将字符串转化成日期,如果输入的字符串不是日期时,则返回1970-1-1
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static DateTime ToDate(string str)
{
if (str == null || str == "")
return DefDate();
else
{
DateTime dt = DefDate();
if (DateTime.TryParse(str, out dt) == false)
return DefDate();
else
return dt;
}
}
/// <summary>
/// 将对象转化成日期,如果输入的对象不是日期时,则返回1970-1-1
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static DateTime ToDate(object obj)
{
DateTime Result = DefDate();
if (!obj.Equals(null))
{
try
{
Result = (DateTime)obj;
}
catch (Exception ex)
{
return DefDate();
}
//if (DateTime.TryParse(obj.ToString(), out Result) == false)
// return DefDate;
}
return Result;
}
/// <summary>
/// 将对象转化成日期,如果输入的对象不是日期时,则返回1900-1-1
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static DateTime ToDate(System.Nullable<System.DateTime> obj)
{
if (!obj.Equals(null))
{
return (DateTime)obj;
}
else
{
return DefDate();
}
}
/// <summary>
/// 20070101-->2007-01-01
/// </summary>
/// <param name="Str"></param>
/// <returns></returns>
public static string StrTodate(string Str)
{
string stryear, strmon, strday;
try
{
stryear = Str.Remove(4, 4);
Str = Str.Remove(0, 4);
strmon = Str.Remove(2, 2);
strday = Str.Remove(0, 2);
stryear = stryear + "-" + strmon + "-" + strday;
return stryear;
}
catch
{
return DefFormatDate();
}
}
#endregion
#region 周计算
/// <summary>
/// 周几
/// </summary>
/// <param name="curDay"></param>
/// <returns></returns>
public static string DayOfWeek(DateTime curDay)
{
string[] weekdays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
string week = weekdays[Convert.ToInt32(curDay.DayOfWeek)];
return week;
}
/// <summary>
/// 第几周
/// </summary>
/// <param name="curDay"></param>
/// <returns></returns>
public static int WeekOfYear(DateTime curDay)
{
int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "-" + "1-1").DayOfWeek);
int days = curDay.DayOfYear;
int daysOutOneWeek = days - (7 - firstdayofweek);
if (daysOutOneWeek <= 0)
{
return 1;
}
else
{
int weeks = daysOutOneWeek / 7;
if (daysOutOneWeek % 7 != 0)
weeks++;
return weeks + 1;
}
}
#region 返回某年某月最后一天
/// <summary>
/// 返回某年某月最后一天
/// </summary>
/// <param name="year">年份</param>
/// <param name="month">月份</param>
/// <returns>日</returns>
public static int GetMonthLastDate(int year, int month)
{
DateTime lastDay = new DateTime(year, month, new System.Globalization.GregorianCalendar().GetDaysInMonth(year, month));
int Day = lastDay.Day;
return Day;
}
#endregion
#endregion
#region 返回时间差
/// <summary>
/// 返回时间差 秒
/// </summary>
/// <param name="begDateTime"></param>
/// <param name="endDateTime"></param>
/// <returns></returns>
public static double DateDiffSeconds(DateTime begDateTime, DateTime endDateTime)
{
try
{
TimeSpan ts = endDateTime - begDateTime;
return ts.TotalSeconds;
}
catch (Exception)
{
return 0;
}
}
/// <summary>
/// 返回时间差 分钟
/// </summary>
/// <param name="begDateTime"></param>
/// <param name="endDateTime"></param>
/// <returns></returns>
public static double DateDiffMinutes(DateTime begDateTime, DateTime endDateTime)
{
try
{
TimeSpan ts = endDateTime - begDateTime;
return ts.TotalMinutes;
}
catch (Exception)
{
return 0;
}
}
public static double DateDiffHours(DateTime begDateTime, DateTime endDateTime)
{
try
{
TimeSpan ts = endDateTime - begDateTime;
return ts.TotalHours;
}
catch (Exception)
{
return 0;
}
}
public static double DateDifDays(DateTime begDateTime, DateTime endDateTime)
{
try
{
TimeSpan ts = endDateTime - begDateTime;
return ts.TotalDays;
}
catch (Exception)
{
return 0;
}
}
#endregion
/// <summary>
/// Unix时间戳
/// </summary>
/// <returns>毫秒</returns>
public static long UnixTime()
{
System.DateTime time = DateTime.Now;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}
/// <summary>
/// 将c# DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time">时间</param>
/// <returns> 毫秒</returns>
public static long DateTimeToUnixTime(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}
/// <summary>
/// 时间戳转为C#格式时间
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
public static DateTime UnixTimeToDateTime(long timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = timeStamp * 10000;
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
/// <summary>
/// Unix时间戳 时间格式化 为日期
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
public static string FormatDateUnixTime(long timeStamp)
{
DateTime dtStart = UnixTimeToDateTime(timeStamp);
return FormatDate(dtStart);
}
/// <summary>
/// Unix时间戳 时间格式化 为时间
/// </summary>
/// <param name="timeStamp"></param>
/// <returns></returns>
public static string FormatDateTimeUnixTime(long timeStamp)
{
DateTime dtStart = UnixTimeToDateTime(timeStamp);
return FormatDateTime(dtStart);
}
}
}

367
EC.Util/Common/FileUnit.cs

@ -0,0 +1,367 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web;
/*******************************************************/
/*Project:
Module :
Description :
Date : 2008-6-3 15:09:12
Create : Lxc
Update : 2014-12-31
TODO : */
/*******************************************************/
namespace System
{
/// <summary>
/// 文件操作单元
/// </summary>
public partial class FileUnit
{
static readonly string AppFilepatch = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
/// <summary>
/// 创建目录
/// </summary>
/// <param name="fullPath"></param>
/// <returns></returns>
public static bool CreateDir(string fullPath)
{
if (!Directory.Exists(fullPath))
{
try
{
Directory.CreateDirectory(fullPath);
return true;
}
catch (Exception ex)
{
return false;
}
}
return true;
}
//删除文件名 获取路径
public static string GetDirectory(string fullPath)
{
return Path.GetDirectoryName(fullPath);
//return allFileName.Substring(0, allFileName.LastIndexOf('\\'));
}
/// <summary>
/// 得到文件名称
/// </summary>
/// <param name="fullPath"></param>
/// <returns></returns>
public static string GetFileName(string fullPath)
{
return Path.GetFileName(fullPath);
}
/// <summary>
/// 得到扩展名
/// </summary>
/// <param name="fullPath"></param>
/// <returns></returns>
public static string GetFileExt(string fullPath)
{
return Path.GetExtension(fullPath);
}
/// <summary>
/// 得到名称没有扩展名
/// </summary>
/// <param name="fullPath"></param>
/// <returns></returns>
public static string GetFileNameNoExt(string fullPath)
{
return Path.GetFileNameWithoutExtension(fullPath);
}
/// <summary>
/// 复制文件
/// </summary>
/// <param name="sourceFileName"></param>
/// <param name="destFileName"></param>
/// <returns></returns>
public static string CopyFile(string sourceFileName, string destFileName)
{
try
{
if (File.Exists(sourceFileName))
{
string destDirectory = GetDirectory(destFileName);// destFileName.Substring(0, destFileName.LastIndexOf('\\'));//删除文件名 获取路径
bool createDir = CreateDir(destDirectory);
if (createDir)
{
File.Copy(sourceFileName, destFileName);
}
else
{
return "文件路径" + destFileName + "不正确!";
}
}
else
{
return "文件路径" + sourceFileName + "不存在!";
}
return "";
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 得到路径 没有扩展名
/// </summary>
/// <param name="rptPath"></param>
/// <returns></returns>
public static string GetPathNoExt(string rptPath)
{
string rtpDir = GetDirectory(rptPath);
string disFileName = GetFileNameNoExt(rptPath);
string disPatch = rtpDir + "\\" + disFileName;// +".docx";
return disPatch;
}
/// <summary>
/// 读取文本
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public static string ReadtxtFile(string filename)
{
try
{
if (File.Exists(filename))
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.UTF8))
{
return sr.ReadToEnd();
}
}
else LogUnit.Error(typeof(FileUnit),"no exists " + filename);
}
catch (Exception e)
{
LogUnit.Error(typeof(FileUnit), e.ToString());
}
return "";
}
/// <summary>
/// 读取多行文本
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public static List<string> ReadtxtLinesFile(string filename)
{
List<string> filtxtLines = new List<string>();
try
{
if (File.Exists(filename))
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.UTF8))
{
String line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
filtxtLines.Add(line);
}
}
}
}
catch (Exception e)
{
LogUnit.Error(typeof(FileUnit), e.ToString());
}
return filtxtLines;
}
/// <summary>
/// 读取多行文本
/// </summary>
/// <param name="filepatch"></param>
/// <param name="filename"></param>
/// <param name="txtLines"></param>
/// <returns></returns>
public static bool WritetxtFileLine(string filepatch,string filename, List<string> txtLines)
{
List<string> filtxtLines = new List<string>();
try
{
if (!Directory.Exists(filepatch))
{
Directory.CreateDirectory(filepatch);
}
using (StreamWriter sw = new StreamWriter(filepatch + filename, false, System.Text.Encoding.UTF8))
{
foreach (string str in txtLines)
{
sw.WriteLine(str);
}
sw.Close();
}
}
catch (Exception e)
{
LogUnit.Error(typeof(FileUnit), e.ToString());
return false;
}
return true;
}
/// <summary>
/// 写入文本
/// </summary>
/// <param name="filepatch"></param>
/// <param name="filename"></param>
/// <param name="text"></param>
/// <returns></returns>
public static bool WritetxtFile(string filepatch, string filename, string text)
{
List<string> filtxtLines = new List<string>();
try
{
if (!Directory.Exists(filepatch))
{
Directory.CreateDirectory(filepatch);
}
using (StreamWriter sw = new StreamWriter(filepatch + filename, false, System.Text.Encoding.UTF8))
{
sw.Write(text);
sw.Close();
}
}
catch (Exception e)
{
LogUnit.Error(typeof(FileUnit), e.ToString());
return false;
}
return true;
}
private static bool Log(string subfilepatch,string logmessage)
{
try
{
string logfilePath = AppFilepatch + "Log\\" + subfilepatch ;
if (!Directory.Exists(logfilePath))
{
Directory.CreateDirectory(logfilePath);
}
using (StreamWriter sw = new StreamWriter(logfilePath + DateTime.Now.ToString("yyyyMMdd") + ".txt", true, System.Text.Encoding.UTF8))
{
sw.WriteLine(DateTime.Now.ToString() + " : " + logmessage);
sw.Close();
}
}
catch (Exception e)
{
return false;
}
return true;
}
//支付日志
public static void PayLog(string log)
{
string path = "PayLog\\";
Log(path, log);
}
//订单日志
public static void OrderLog(string log)
{
string path = "OrderLog\\";
Log(path, log);
}
//写入日志
public static void Log(string log)
{
string path = "";
Log(path, log);
}
public static void WebLog(string log)
{
Log(log);
}
//public static void WebLog(string log)
//{
// string path = HttpContext.Current.Server.MapPath(".")+"Web\\";
// Log(path, log);
//}
public static void ErrLog(string log)
{
string subpath = "ErrLog\\";
Log(subpath, log);
}
public static void HisLog(string log)
{
string subpath = "HisLog\\";
Log(subpath, log);
}
public static void Package(string log)
{
string path = "Package\\";
Log(path, log);
}
public static void EPS(string log)
{
string path = "EPS\\";
Log(path, log);
}
public static void AllLog(string log)
{
string path = "AllLog\\";
Log(path, log);
}
public static bool Exists(string path)
{
return File.Exists(path);
}
public static void DeleteFile(string path)
{
try
{
if (File.Exists(path))
{
File.Delete(path);
}
else
{
LogUnit.Error(typeof(FileUnit), "路径不存在" + path);
}
}
catch (Exception ex)
{
LogUnit.Error(typeof(FileUnit), ex.ToString());
}
}
}
}

67
EC.Util/Common/LogUnit.cs

@ -0,0 +1,67 @@
using log4net;
using log4net.Config;
using System;
using System.IO;
namespace System;
public static class LogUnit
{
private static readonly ILog logger;
static LogUnit()
{
string fileName = Path.Combine("config", "log4net.Config");
XmlConfigurator.Configure(new FileInfo(fileName));
logger = LogManager.GetLogger(typeof(LogUnit));
}
public static void Init()
{
}
public static void Debug(string msg)
{
logger.Debug(msg);
}
public static void Info(string msg)
{
logger.Info(msg);
}
public static void Warn(string msg)
{
logger.Warn(msg);
}
public static void Error(string msg)
{
logger.Error(msg);
}
public static void Fatal(string msg)
{
logger.Fatal(msg);
}
public static void Error(Exception e)
{
logger.Error(e);
}
/// <summary>
/// 输出日志到Log4Net
/// </summary>
/// <param name="t"></param>
/// <param name="ex"></param>
public static void Error(Type t, Exception ex)
{
logger.Error("Error", ex);
}
public static void Error(Type t, string logMessage)
{
logger.Error(logMessage);
}
}

1
EC.Util/EC.Util.csproj

@ -68,6 +68,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="log4net" Version="2.0.15" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="System.IO.Ports" Version="7.0.0" />
</ItemGroup>

39
EC.Util/Net/APICallBack.cs

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EC.Util.Net
{
public class APICallBack
{
public string reqCode { get; set; }
/// <summary>
/// 任务单号
/// </summary>
public string taskCode { get; set; }
/// <summary>
/// AGV状态指令
/// </summary>
public string method { get; set; }
public string reqTime { get; set; }
public string wbCode { get; set; }
/// <summary>
/// AGV编号
/// </summary>
public string robotCode { get; set; }
/// <summary>
/// 请求AGV接口后返回的成功失败或其他消息
/// </summary>
public string message { get; set; }
/// <summary>
/// 请求AGV接口后返回的任务单号
/// </summary>
public string data { get; set; }
/// <summary>
/// 请求AGV接口后返回的任务状态
/// </summary>
public string code { get; set; }
}
}

362
EC.Util/Net/HttpServer.cs

@ -0,0 +1,362 @@

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace EC.Util.Net
{
public class HttpServer
{
public event EventHandler<APICallBack> OnRecData; //定义一个委托类型的事件
#region
public string Host { get; set; }
public string port { get; set; }
private string _webHomeDir = "";
private HttpListener listener;
private Thread listenThread;
private string directorySeparatorChar = Path.DirectorySeparatorChar.ToString();
public string ImageUploadPath { get; set; }
/// <summary>
/// 设置监听端口,重启服务生效
/// </summary>
//public string Port
//{
// get { return this.port; }
// set
// {
// int p;
// if (string.IsNullOrEmpty(value) || !int.TryParse(value, out p))
// {
// throw new Exception("给http监听器赋值的端口号无效!");
// }
// this.port = value;
// }
//}
/// <summary>
/// http服务根目录
/// </summary>
public string WebHomeDir
{
get { return this._webHomeDir; }
set
{
if (!Directory.Exists(value))
throw new Exception("http服务器设置的根目录不存在!");
this._webHomeDir = value;
}
}
/// <summary>
/// 服务器是否在运行
/// </summary>
public bool IsRunning
{
get { return (listener == null) ? false : listener.IsListening; }
}
#endregion
#region
public HttpServer( string host, string port, string webHomeDir, string imageUploadPath)
{
this.Host = host;
this.port = port;
this._webHomeDir = webHomeDir;
ImageUploadPath = imageUploadPath;
listener = new HttpListener();
}
public bool AddPrefixes(string uriPrefix)
{
string uri = "http://" + uriPrefix + ":" + this.port + "/";
if (listener.Prefixes.Contains(uri)) return false;
listener.Prefixes.Add(uri);
return true;
}
/// <summary>
/// 启动服务
/// </summary>
public void Start()
{
try
{
if (listener.IsListening)
return;
if (!string.IsNullOrEmpty(Host) && Host.Length > 0)
listener.Prefixes.Add("http://" + Host + ":" + this.port + "/"); //AGV/AGVAPI/agvCallback/
else if (listener.Prefixes == null || listener.Prefixes.Count == 0)
listener.Prefixes.Add("http://localhost:" + this.port + "/");
listener.Start();
listenThread = new Thread(AcceptClient);
listenThread.Name = "signserver";
listenThread.Start();
Log("开启接口监听服务:"+ this.port);
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
}
}
/// <summary>
/// 停止服务
/// </summary>
public void Stop()
{
try
{
if (listener != null)
{
//listener.Close();
//listener.Abort();
listener.Stop();
}
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
}
}
/// <summary>
/// /接受客户端请求
/// </summary>
void AcceptClient()
{
//int maxThreadNum, portThreadNum;
////线程池
//int minThreadNum;
//ThreadPool.GetMaxThreads(out maxThreadNum, out portThreadNum);
//ThreadPool.GetMinThreads(out minThreadNum, out portThreadNum);
//Console.WriteLine("最大线程数:{0}", maxThreadNum);
//Console.WriteLine("最小空闲线程数:{0}", minThreadNum);
while (listener.IsListening)
{
try
{
HttpListenerContext context = listener.GetContext();
//new Thread(HandleRequest).Start(context);
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
}
catch
{
}
}
}
#endregion
#region HandleRequest
//处理客户端请求
private void HandleRequest(object ctx)
{
HttpListenerContext context = ctx as HttpListenerContext;
HttpListenerResponse response = context.Response;
HttpListenerRequest request = context.Request;
try
{
context.Request.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
string rawUrl = System.Web.HttpUtility.UrlDecode(request.RawUrl);
int paramStartIndex = rawUrl.IndexOf('?');
if (paramStartIndex > 0)
rawUrl = rawUrl.Substring(0, paramStartIndex);
else if (paramStartIndex == 0)
rawUrl = "";
if ( rawUrl.EndsWith("agvCallback") ) {
APICallBack apiCallBack = new APICallBack();
apiCallBack.reqCode = context.Request.QueryString["reqCode"];
apiCallBack.taskCode = context.Request.QueryString["taskCode"];
apiCallBack.method = context.Request.QueryString["method"];
apiCallBack.wbCode = context.Request.QueryString["wbCode"];
apiCallBack.robotCode = context.Request.QueryString["robotCode"];
//接收POST参数 2020-5-30
Stream stream = context.Request.InputStream;
System.IO.StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8);
//整理应该是接收到的值
string body = reader.ReadToEnd();
//FileUnit.Log(body);
//if (JsonUtil.JSONToObject<APICallBack>(body)!=null)
//{
// apiCallBack = JsonUnit.JSONToObject<APICallBack>(body);
//}
response.ContentType = "text/html;charset=utf-8";
using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
{
OnRecData?.Invoke(this, apiCallBack);
string str = Newtonsoft.Json.JsonConvert.SerializeObject(new { Code = "0", Data = "调用成功", Message = "成功", ReqCode = apiCallBack.reqCode });
writer.Write(str);
}
////Response
//context.Response.StatusCode = 200;
//context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
//context.Response.ContentType = "application/json";
//context.Response.ContentEncoding = Encoding.UTF8;
//byte[] buffer = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(new { Code = "0", Data= "调用成功", Message = "成功" , ReqCode ="",}));
//context.Response.ContentLength64 = buffer.Length;
//var output = context.Response.OutputStream;
//output.Write(buffer, 0, buffer.Length);
//output.Close();
}
else if (string.Compare(rawUrl, "/ImageUpload", true) == 0)
{
#region 上传图片
string fileName = context.Request.QueryString["name"];
string filePath = ImageUploadPath + "\\" + DateTime.Now.ToString("yyMMdd_HHmmss_ffff")
+ Path.GetExtension(fileName).ToLower();
using (var stream = request.InputStream)
{
using (var br = new BinaryReader(stream))
{
WriteStreamToFile(br, filePath, request.ContentLength64);
}
}
response.ContentType = "text/html;charset=utf-8";
using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
{
writer.WriteLine("接收完成!");
}
#endregion
}
else
{
#region 网页请求
string InputStream = "";
using (var streamReader = new StreamReader(request.InputStream))
{
InputStream = streamReader.ReadToEnd();
}
string filePath = "";
if (string.IsNullOrEmpty(rawUrl) || rawUrl.Length == 0 || rawUrl == "/")
filePath = WebHomeDir + directorySeparatorChar + "Index.html";
else
filePath = WebHomeDir + rawUrl.Replace("/", directorySeparatorChar);
if (!File.Exists(filePath))
{
response.ContentLength64 = 0;
response.StatusCode = 404;
response.Abort();
}
else
{
response.StatusCode = 200;
string exeName = Path.GetExtension(filePath);
response.ContentType = GetContentType(exeName);
FileStream fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);
int byteLength = (int)fileStream.Length;
byte[] fileBytes = new byte[byteLength];
fileStream.Read(fileBytes, 0, byteLength);
fileStream.Close();
fileStream.Dispose();
response.ContentLength64 = byteLength;
response.OutputStream.Write(fileBytes, 0, byteLength);
response.OutputStream.Close();
}
#endregion
}
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
response.StatusCode = 200;
response.ContentType = "text/plain";
using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
{
writer.WriteLine("接收完成!");
}
}
try
{
response.Close();
}
catch (Exception ex)
{
LogUnit.Error(ex.Message);
}
}
#endregion
#region GetContentType
/// <summary>
/// 获取文件对应MIME类型
/// </summary>
/// <param name="fileExtention">文件扩展名,如.jpg</param>
/// <returns></returns>
protected string GetContentType(string fileExtention)
{
if (string.Compare(fileExtention, ".html", true) == 0
|| string.Compare(fileExtention, ".htm", true) == 0)
return "text/html;charset=utf-8";
else if (string.Compare(fileExtention, ".js", true) == 0)
return "application/javascript";
else if (string.Compare(fileExtention, ".css", true) == 0)
return "text/css";
else if (string.Compare(fileExtention, ".png", true) == 0)
return "image/png";
else if (string.Compare(fileExtention, ".jpg", true) == 0 || string.Compare(fileExtention, ".jpeg", true) == 0)
return "image/jpeg";
else if (string.Compare(fileExtention, ".gif", true) == 0)
return "image/gif";
else if (string.Compare(fileExtention, ".swf", true) == 0)
return "application/x-shockwave-flash";
else if (string.Compare(fileExtention, ".pdf", true) == 0)
return "application/pdf";
else
return "";//application/octet-stream
}
#endregion
#region WriteStreamToFile
//const int ChunkSize = 1024 * 1024;
private void WriteStreamToFile(BinaryReader br, string fileName, long length)
{
byte[] fileContents = new byte[] { };
var bytes = new byte[length];
int i = 0;
while ((i = br.Read(bytes, 0, (int)length)) != 0)
{
byte[] arr = new byte[fileContents.LongLength + i];
fileContents.CopyTo(arr, 0);
Array.Copy(bytes, 0, arr, fileContents.Length, i);
fileContents = arr;
}
using (var fs = new FileStream(fileName, FileMode.Create))
{
using (var bw = new BinaryWriter(fs))
{
bw.Write(fileContents);
}
}
}
#endregion
public void Log(string msg, bool isErr = false)
{
//(msg, isErr);
}
}
}

657
EC.Util/Net/NetUnit.cs

@ -0,0 +1,657 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
namespace System
{
/// <summary>
/// 网络操作单元
/// </summary>
public partial class NetUnit
{
#region 获取主机名称
/// <summary>
/// 获取本地机器名称
/// </summary>
/// <returns>机器名称</returns>
public static string GetHostName()
{
string hostName = "";
try
{
hostName = Dns.GetHostName();
return hostName;
}
catch
{
return null;
}
}
#endregion
#region 获取本地主机IP
/// <summary>
/// 获取本地机器IP
/// </summary>
/// <returns>IP地址</returns>
public static string GetHostIp()
{
string localIp = "";
try
{
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < addressList.Length; i++)
{
localIp += addressList[i].ToString();
}
return localIp;
}
catch
{
return null;
}
}
#endregion
#region 穿过代理服务器获得Ip地址,如果有多个IP,则第一个是用户的真实IP,其余全是代理的IP,用逗号隔开
//public static string getRealIp()
//{
// string UserIP;
// if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"]!=null) //得到穿过代理服务器的ip地址
// {
// UserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
// }
// else
// {
// UserIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
// }
// return UserIP;
//}
#endregion
#region 获取主机MAC地址
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>string null</returns>
public static string GetHostMac()
{
//string mac = "";
//try
//{
// ManagementClass mc;
// mc=new ManagementClass("Win32_NetworkAdapterConfiguration");
// ManagementObjectCollection moc=mc.GetInstances();
// foreach(ManagementObject mo in moc)
// {
// if(mo["IPEnabled"].ToString()=="True")
// mac=mo["MacAddress"].ToString();
// }
// return mac;
//}
//catch
//{
// return null;
//}
return null;
}
#endregion
#region 获取本机IP
public static string GetLocalIp()
{
//Page.Request.UserHostName
return null;
}
#endregion
/// <summary>
/// C# 验证IP
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static bool IsIP(string ip)
{
string pattern = @"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))";
Regex objRe = new Regex(pattern);
Match objMa = objRe.Match(ip);
if(!objMa.Success)
{
return false;
}
else return true;
}
public static string PingResult(string ip)
{
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
options.DontFragment = true;
string data = "Lxc";
byte[] buffer = Encoding.ASCII.GetBytes(data);
//Wait seconds for a reply.
int timeout = 100;
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
return reply.Status.ToString();
}
#region 获取指定WEB页面
/// GET方法获取页面
/// 函数名:GetWebUrl
/// 功能描述:WebClient 获取页面
/// 处理流程:
/// 算法描述:
/// 作 者: lxc
/// 日 期: 2012-10-09
/// 修 改:
/// 日 期:
/// 版 本:
public static string GetWebUrl(string strurl)
{
WebClient webClient = new WebClient();
try
{
webClient.Credentials = CredentialCache.DefaultCredentials;
Byte[] pageData = webClient.DownloadData(strurl);
//string pageHtml = Encoding.UTF8.GetString(pageData);
string pageHtml = Encoding.Default.GetString(pageData);
return pageHtml;
}
catch (WebException webEx)
{
return "error_GetWebUrl:" + webEx.ToString();
}
finally
{
webClient = null;
}
}
#endregion
#region PostUrl(String url, String paramList)
/// <summary>
/// POST方法获取页面
/// </summary>
/// <param name="url"></param>
/// <param name="paramList">格式: a=xxx&b=xxx&c=xxx</param>
/// <returns></returns>
public static string PostUrl(String url, String paramList)
{
HttpWebResponse res = null;
string strResult = "";
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "application/x-www-form-urlencoded";
//req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
CookieContainer cookieCon = new CookieContainer();
req.CookieContainer = cookieCon;
StringBuilder UrlEncoded = new StringBuilder();
Char[] reserved = { '?', '=', '&' };
byte[] SomeBytes = null;
if (paramList != null)
{
int i = 0, j;
while (i < paramList.Length)
{
j = paramList.IndexOfAny(reserved, i);
if (j == -1)
{
// UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length-i)));
UrlEncoded.Append((paramList.Substring(i, paramList.Length - i)));
break;
}
// UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j-i)));
UrlEncoded.Append((paramList.Substring(i, j - i)));
UrlEncoded.Append(paramList.Substring(j, 1));
i = j + 1;
}
SomeBytes = Encoding.Default.GetBytes(UrlEncoded.ToString());
req.ContentLength = SomeBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
newStream.Close();
}
else
{
req.ContentLength = 0;
}
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
// Encoding encode = System.Text.Encoding.Default;//GetEncoding("utf-8");
string encodeheader = res.ContentType;
string encodestr = System.Text.Encoding.Default.HeaderName;
if ((encodeheader.IndexOf("charset=") >= 0) && (encodeheader.IndexOf("charset=GBK") == -1) && (encodeheader.IndexOf("charset=gbk") == -1))
{
int i = encodeheader.IndexOf("charset=");
encodestr = encodeheader.Substring(i + 8);
}
Encoding encode = System.Text.Encoding.GetEncoding(encodestr);//GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream, encode);
Char[] read = new Char[256];
int count = sr.Read(read, 0, 256);
while (count > 0)
{
String str = new String(read, 0, count);
strResult += str;
count = sr.Read(read, 0, 256);
}
}
catch (Exception e)
{
strResult = e.ToString();
}
finally
{
if (res != null)
{
res.Close();
}
}
return strResult;
}
#endregion
#region 下载指定WEB页面
/// GET方法获取页面
/// 函数名:GetFileUrl
/// 功能描述:WebClient 下载文件
/// 处理流程:
/// 算法描述:
/// 作 者: lxc
/// 日 期: 2012-10-09
/// 修 改:
/// 日 期:
/// 版 本:
public static Boolean GetFileUrl(string strurl, string filename)
{
try
{
WebClient webClient = new WebClient();
// webClient.Credentials = CredentialCache.DefaultCredentials;
webClient.DownloadFile(strurl, filename);
return true;
}
catch (WebException webex)
{
return false;// "error_GetWebUrl:" + webEx.ToString();
}
}
#endregion
#region 获取图片
public static Stream GetImage(String url)
{
HttpWebResponse res = null;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
return ReceiveStream;
}
catch
{
return null;
}
finally
{
}
}
/// GET方法获取页面
/// 函数名:GetImage
/// 功能描述:GET方法获取页面
/// 处理流程:
/// 算法描述:
/// 作 者: 杨栋
/// 日 期: 2006-11-21 09:00
/// 修 改: 2007-01-29 17:00 2006-12-05 17:00
/// 日 期:
/// 版 本:
///
#region GetImage(String url,string cookieheader)
/// <summary>
///
/// </summary>
/// <param name="url">目标url</param>
/// <param name="cookieheader">输入Cookie</param>
/// <returns></returns>
public static byte[] GetImage(String url, string cookieheader)
{
// outcookieheader="";
HttpWebResponse res = null;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
// req.Method = "GET";
// req.ContentType = "application/x-www-form-urlencoded";
//req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
// CookieContainer cookieCon = new CookieContainer();
//
// // string name=cookieheader.Substring(0,cookieheader.IndexOf("="));
// // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1);
// // cookieCon.Add(new Uri(url),new Cookie(name,key));
//
//
// req.CookieContainer = cookieCon;
// if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0))
// {
// req.CookieContainer.SetCookies(new Uri(url),cookieheader);
// }
//为请求加入cookies
CookieContainer cookieCon = new CookieContainer();
// req.CookieContainer = cookieCon;
//取得cookies 集合
string[] ls_cookies = cookieheader.Split(';');
if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。
{
req.CookieContainer = cookieCon;
if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0))
{
req.CookieContainer.SetCookies(new Uri(url), cookieheader);
}
}
else
{
//如果是多个cookie 就分别加入 cookies 容器。
//////////////////////////////////
string[] ls_cookie = null;
for (int i = 0; i < ls_cookies.Length; i++)
{
ls_cookie = ls_cookies[i].Split('=');
// cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim()));
cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1)));
}
req.CookieContainer = cookieCon;
////////////////////////////////////
}
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
byte[] mybytes = new byte[4096];
int count = ReceiveStream.Read(mybytes, 0, 4096);
byte[] image = new byte[count];
Array.Copy(mybytes, image, count);
if (res != null)
{
res.Close();
}
return image;
}
finally
{
}
}
#endregion
#region GetImage(String url,string cookieheader,out string outcookieheader,string Header_Referer)
/// <summary>
///
/// </summary>
/// <param name="url">目标url</param>
/// <param name="cookieheader">输入Cookie</param>
/// <returns></returns>
public static byte[] GetImage(String url, string cookieheader, out string outcookieheader, string Header_Referer)
{
// outcookieheader="";
HttpWebResponse res = null;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
if (Header_Referer.Length > 1)
{
req.Referer = Header_Referer;
}
// req.Method = "GET";
// req.ContentType = "application/x-www-form-urlencoded";
//req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
// CookieContainer cookieCon = new CookieContainer();
//
// // string name=cookieheader.Substring(0,cookieheader.IndexOf("="));
// // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1);
// // cookieCon.Add(new Uri(url),new Cookie(name,key));
//
//
// req.CookieContainer = cookieCon;
// if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0))
// {
// req.CookieContainer.SetCookies(new Uri(url),cookieheader);
// }
//为请求加入cookies
CookieContainer cookieCon = new CookieContainer();
// req.CookieContainer = cookieCon;
//取得cookies 集合
string[] ls_cookies = cookieheader.Split(';');
if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。
{
req.CookieContainer = cookieCon;
if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0))
{
req.CookieContainer.SetCookies(new Uri(url), cookieheader);
}
}
else
{
//如果是多个cookie 就分别加入 cookies 容器。
//////////////////////////////////
string[] ls_cookie = null;
for (int i = 0; i < ls_cookies.Length; i++)
{
ls_cookie = ls_cookies[i].Split('=');
// cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim()));
cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1)));
}
req.CookieContainer = cookieCon;
////////////////////////////////////
}
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
outcookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));//获得cookie
if (outcookieheader.Length < 2)
{
try
{
outcookieheader = res.Headers["Set-Cookie"];
outcookieheader = outcookieheader.Substring(0, outcookieheader.IndexOf(";"));
}
catch
{
outcookieheader = "";
}
}
byte[] mybytes = new byte[4096];
int count = ReceiveStream.Read(mybytes, 0, 4096);
byte[] image = new byte[count];
Array.Copy(mybytes, image, count);
if (res != null)
{
res.Close();
}
return image;
}
finally
{
}
}
#endregion
#region GetImage(String url,string cookieheader,string Header_Referer)
/// <summary>
///
/// </summary>
/// <param name="url">目标url</param>
/// <param name="cookieheader">输入Cookie</param>
/// <param name="Header_Referer">包头 Referer</param>
/// <returns></returns>
public static byte[] GetImage(String url, string cookieheader, string Header_Referer)
{
// outcookieheader="";
HttpWebResponse res = null;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
if (Header_Referer.Length > 1)
{
req.Referer = Header_Referer;
}
// req.Method = "GET";
// req.ContentType = "application/x-www-form-urlencoded";
//req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
// CookieContainer cookieCon = new CookieContainer();
//
// // string name=cookieheader.Substring(0,cookieheader.IndexOf("="));
// // string key=cookieheader.Substring(cookieheader.IndexOf("=")+1,cookieheader.Length-cookieheader.IndexOf("=")-1);
// // cookieCon.Add(new Uri(url),new Cookie(name,key));
//
//
// req.CookieContainer = cookieCon;
// if ((cookieheader.Length>0 )&(cookieheader.IndexOf("=")>0))
// {
// req.CookieContainer.SetCookies(new Uri(url),cookieheader);
// }
//为请求加入cookies
CookieContainer cookieCon = new CookieContainer();
// req.CookieContainer = cookieCon;
//取得cookies 集合
string[] ls_cookies = cookieheader.Split(';');
if (ls_cookies.Length <= 1) //如果有一个或没有cookies 就采用下面的方法。
{
req.CookieContainer = cookieCon;
if ((cookieheader.Length > 0) & (cookieheader.IndexOf("=") > 0))
{
req.CookieContainer.SetCookies(new Uri(url), cookieheader);
}
}
else
{
//如果是多个cookie 就分别加入 cookies 容器。
//////////////////////////////////
string[] ls_cookie = null;
for (int i = 0; i < ls_cookies.Length; i++)
{
ls_cookie = ls_cookies[i].Split('=');
// cookieCon.Add(new Uri(url),new Cookie(ls_cookie[0].ToString().Trim(),ls_cookie[1].ToString().Trim()));
cookieCon.Add(new Uri(url), new Cookie(ls_cookie[0].ToString().Trim(), ls_cookies[i].Substring(ls_cookies[i].IndexOf("=") + 1)));
}
req.CookieContainer = cookieCon;
////////////////////////////////////
}
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
byte[] mybytes = new byte[4096];
int count = ReceiveStream.Read(mybytes, 0, 4096);
byte[] image = new byte[count];
Array.Copy(mybytes, image, count);
if (res != null)
{
res.Close();
}
return image;
}
finally
{
}
}
#endregion
#region GetImage(String url,string cookieheader,string Header_Referer,string Header_UserAgent,string http_type)
#endregion
#endregion
}
}

3
JiLinApp/JiLinApp.csproj

@ -12,6 +12,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<WarningLevel>6</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Core\LogUnit.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="log4net" Version="2.0.15" />
<PackageReference Include="MaterialDesignColors" Version="2.1.2">

Loading…
Cancel
Save