init commit all code
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="ServiceAddressInfo" value="127.0.0.1:8888" />
|
||||
<add key="HandlerClassInfo" value="" />
|
||||
<add key="AppName" value="Xzsp" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,198 @@
|
||||
using Getf.Service.Transfer.Client.WinService.Entities;
|
||||
using Getf.Service.Transfer.Client.WinService.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using SuperSocket.ClientEngine;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService
|
||||
{
|
||||
public class ClientService : IDisposable
|
||||
{
|
||||
LogHelper _LogHelper;
|
||||
|
||||
private DateTime LastRecvTime = DateTime.Now;
|
||||
|
||||
private readonly IDataHandler DataHandler;
|
||||
private readonly EasyClient TcpClient;
|
||||
private readonly string Ip;
|
||||
private readonly int Port;
|
||||
private Thread HeartThread;
|
||||
private bool IsRetrying;
|
||||
|
||||
public ClientService()
|
||||
{
|
||||
var serviceAddressInfo = ConfigurationManager.AppSettings["ServiceAddressInfo"].Split(':');
|
||||
TcpClient = new EasyClient();
|
||||
Ip = serviceAddressInfo[0];
|
||||
Port = int.Parse(serviceAddressInfo[1]);
|
||||
|
||||
var assemblyInfo = System.Configuration.ConfigurationManager.AppSettings["DataHandlerClassInfo"].Split(',');
|
||||
DataHandler = Assembly.Load(assemblyInfo[1]).CreateInstance(assemblyInfo[0]) as IDataHandler;
|
||||
_LogHelper = new LogHelper();
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
TcpClient.Initialize(new ReceiveFilter(), OnDataGeted);
|
||||
|
||||
TcpClient.Connected += OnConnected;
|
||||
//TcpClient.Closed += Reconnect;
|
||||
TcpClient.Error += Error;
|
||||
Connect();
|
||||
DoHeart();
|
||||
}
|
||||
|
||||
private void DoHeart()
|
||||
{
|
||||
#if DEBUG
|
||||
/*for (int i = 0; i < 100; i++)
|
||||
{
|
||||
var testThread = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
SendHeart();
|
||||
}
|
||||
});
|
||||
testThread.Start();
|
||||
}*/
|
||||
|
||||
#endif
|
||||
|
||||
HeartThread = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
if ((DateTime.Now - LastRecvTime).TotalMinutes > 5)
|
||||
{
|
||||
_LogHelper.Error("超过一分钟没收到心跳包的反馈信息");
|
||||
Reconnect(null, null);
|
||||
}
|
||||
if (TcpClient.IsConnected)
|
||||
{
|
||||
SendHeart();
|
||||
}
|
||||
Thread.Sleep(5 * 1000);
|
||||
}
|
||||
});
|
||||
HeartThread.Start();
|
||||
}
|
||||
|
||||
private void SendHeart()
|
||||
{
|
||||
var r = GetRegisterEntity();
|
||||
r.Head.Type = 4;
|
||||
Send(r.ToByte());
|
||||
}
|
||||
|
||||
private void OnConnected(object sender, EventArgs e)
|
||||
{
|
||||
IsRetrying = false;
|
||||
_LogHelper.Info("连接成功");
|
||||
Send(GetRegisterEntity().ToByte());
|
||||
}
|
||||
|
||||
private void Error(object sender, EventArgs e)
|
||||
{
|
||||
_LogHelper.Info("连接出错,原因为:" + ((ErrorEventArgs)e).Exception.Message);
|
||||
Reconnect(sender, e);
|
||||
}
|
||||
|
||||
private void Reconnect(object sender, EventArgs e)
|
||||
{
|
||||
LastRecvTime = DateTime.Now;
|
||||
CloseConnect();
|
||||
Thread.Sleep(5000);
|
||||
if (IsRetrying) return;
|
||||
IsRetrying = true;
|
||||
Connect();
|
||||
}
|
||||
|
||||
private void Connect()
|
||||
{
|
||||
TcpClient.ConnectAsync(new IPEndPoint(IPAddress.Parse(Ip), Port));
|
||||
}
|
||||
|
||||
|
||||
private void OnDataGeted(TransInfo transInfo)
|
||||
{
|
||||
LastRecvTime = DateTime.Now;
|
||||
if (transInfo.Body == null)//心跳包
|
||||
{
|
||||
/*//应用已被注册 再试
|
||||
if (transInfo.TransResultInfo != null && transInfo.TransResultInfo.Code == -210)
|
||||
{
|
||||
Reconnect(null, null);
|
||||
}*/
|
||||
if (transInfo.TransResultInfo != null && transInfo.TransResultInfo.Message == "注册成功!")
|
||||
{
|
||||
_LogHelper.Info("注册成功");
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var transResult = DataHandler.HandlerData(transInfo);
|
||||
|
||||
var r = GetRegisterEntity();
|
||||
r.Body = new TransBody()
|
||||
{
|
||||
Key = transInfo.Body.Key
|
||||
};
|
||||
r.Head.Type = 3;
|
||||
r.TransResultInfo = transResult.TransResultInfo;
|
||||
r.Data = transResult.Data;
|
||||
|
||||
Send(r.ToByte());
|
||||
}
|
||||
|
||||
private void Send(byte[] data)
|
||||
{
|
||||
if (!TcpClient.IsConnected) return;
|
||||
try
|
||||
{
|
||||
TcpClient.Send(data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("发送错误原因为:" + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private TransInfo GetRegisterEntity()
|
||||
{
|
||||
var ts = TypeHelper.GetTimeStamp();
|
||||
var r = new TransInfo()
|
||||
{
|
||||
Head = new TransHead()
|
||||
{
|
||||
Type = 1,
|
||||
AppID = ConfigurationManager.AppSettings["AppID"],
|
||||
AppSecret = ConfigurationManager.AppSettings["AppSecret"],
|
||||
TimeStamp = ts,
|
||||
Sign = Md5Helper.Md5(ts + ConfigurationManager.AppSettings["Key"])
|
||||
}
|
||||
};
|
||||
return r;
|
||||
}
|
||||
|
||||
private void CloseConnect()
|
||||
{
|
||||
_LogHelper.Info("正在关闭连接");
|
||||
TcpClient.Close();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
CloseConnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
215
93_nei/Getf.Service.Transfer.Client.WinService/ClientService.cs
Normal file
215
93_nei/Getf.Service.Transfer.Client.WinService/ClientService.cs
Normal file
@@ -0,0 +1,215 @@
|
||||
using Getf.Service.Transfer.Client.WinService.Entities;
|
||||
using Getf.Service.Transfer.Client.WinService.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
using SuperSocket.ClientEngine;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService
|
||||
{
|
||||
public class ClientService : IDisposable
|
||||
{
|
||||
LogHelper _LogHelper;
|
||||
|
||||
private DateTime LastRecvTime = DateTime.Now;
|
||||
|
||||
private readonly IDataHandler DataHandler;
|
||||
private TcpClient TcpClient;
|
||||
private readonly string Ip;
|
||||
private readonly int Port;
|
||||
private Thread HeartThread;
|
||||
private bool IsRetrying;
|
||||
|
||||
public ClientService()
|
||||
{
|
||||
var serviceAddressInfo = ConfigurationManager.AppSettings["ServiceAddressInfo"].Split(':');
|
||||
Ip = serviceAddressInfo[0];
|
||||
Port = int.Parse(serviceAddressInfo[1]);
|
||||
|
||||
var assemblyInfo = System.Configuration.ConfigurationManager.AppSettings["DataHandlerClassInfo"].Split(',');
|
||||
DataHandler = Assembly.Load(assemblyInfo[1]).CreateInstance(assemblyInfo[0]) as IDataHandler;
|
||||
_LogHelper = new LogHelper();
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
StartNewEasyClient();
|
||||
DoHeart();
|
||||
}
|
||||
|
||||
private void DoDebug()
|
||||
{
|
||||
for (var i = 0; i < 5; i++)
|
||||
{
|
||||
Thread t = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var r = GetRegisterEntity();
|
||||
r.Head.Type = 4;
|
||||
r.Data = new byte[100 * 1024 * 1024];
|
||||
Send(r.ToByte());
|
||||
Thread.Sleep(100);
|
||||
}
|
||||
});
|
||||
t.Start();
|
||||
}
|
||||
}
|
||||
|
||||
private void StartNewEasyClient()
|
||||
{
|
||||
TcpClient = new TcpClient(Ip, Port, OnDataGeted, OnConnected, OnClosed, OnError);
|
||||
}
|
||||
|
||||
private void OnDataGeted(TransInfo transInfo)
|
||||
{
|
||||
LastRecvTime = DateTime.Now;
|
||||
if (transInfo.Body == null)//心跳包
|
||||
{
|
||||
/*//应用已被注册 再试
|
||||
if (transInfo.TransResultInfo != null && transInfo.TransResultInfo.Code == -210)
|
||||
{
|
||||
Reconnect(null, null);
|
||||
}*/
|
||||
if (transInfo.TransResultInfo != null && transInfo.TransResultInfo.Message == "注册成功!")
|
||||
{
|
||||
_LogHelper.Info("注册成功");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (transInfo.TransResultInfo != null && !String.IsNullOrWhiteSpace(transInfo.TransResultInfo.Message))
|
||||
{
|
||||
_LogHelper.Error("发生错误:" + transInfo.TransResultInfo.Message);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var transResult = DataHandler.HandlerData(transInfo);
|
||||
|
||||
var r = GetRegisterEntity();
|
||||
r.Body = new TransBody()
|
||||
{
|
||||
Key = transInfo.Body.Key
|
||||
};
|
||||
r.Head.Type = 3;
|
||||
r.TransResultInfo = transResult.TransResultInfo;
|
||||
r.Data = transResult.Data;
|
||||
|
||||
Send(r.ToByte());
|
||||
}
|
||||
|
||||
private void OnConnected(object sender, EventArgs e)
|
||||
{
|
||||
IsRetrying = false;
|
||||
_LogHelper.Info("连接成功");
|
||||
Send(GetRegisterEntity().ToByte());
|
||||
}
|
||||
|
||||
private void OnClosed(object sender, EventArgs e)
|
||||
{
|
||||
_LogHelper.Info("EasyClient.OnClosed");
|
||||
ReStart();
|
||||
}
|
||||
|
||||
private void OnError(object sender, EventArgs e)
|
||||
{
|
||||
_LogHelper.Info("连接出错,原因为:" + ((ErrorEventArgs)e).Exception.Message);
|
||||
ReStart();
|
||||
}
|
||||
|
||||
private void ReStart()
|
||||
{
|
||||
Thread.Sleep(5000);
|
||||
StartNewEasyClient();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void DoHeart()
|
||||
{
|
||||
#if DEBUG
|
||||
/*for (int i = 0; i < 100; i++)
|
||||
{
|
||||
var testThread = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
SendHeart();
|
||||
}
|
||||
});
|
||||
testThread.Start();
|
||||
}*/
|
||||
|
||||
#endif
|
||||
|
||||
HeartThread = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
if ((DateTime.Now - LastRecvTime).TotalMinutes > 10)
|
||||
{
|
||||
_LogHelper.Error("超过一分钟没收到心跳包的反馈信息");
|
||||
TcpClient.HeartLost();
|
||||
}
|
||||
if (TcpClient.IsConnected)
|
||||
{
|
||||
SendHeart();
|
||||
}
|
||||
Thread.Sleep(5 * 1000);
|
||||
}
|
||||
});
|
||||
HeartThread.Start();
|
||||
}
|
||||
|
||||
private void SendHeart()
|
||||
{
|
||||
var r = GetRegisterEntity();
|
||||
r.Head.Type = 4;
|
||||
Send(r.ToByte());
|
||||
}
|
||||
|
||||
private void Send(byte[] data)
|
||||
{
|
||||
if (!TcpClient.IsConnected) return;
|
||||
try
|
||||
{
|
||||
TcpClient.Send(data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("发送错误原因为:" + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private TransInfo GetRegisterEntity()
|
||||
{
|
||||
var ts = TypeHelper.GetTimeStamp();
|
||||
var r = new TransInfo()
|
||||
{
|
||||
Head = new TransHead()
|
||||
{
|
||||
Type = 1,
|
||||
AppID = ConfigurationManager.AppSettings["AppID"],
|
||||
AppSecret = ConfigurationManager.AppSettings["AppSecret"],
|
||||
TimeStamp = ts,
|
||||
Sign = Md5Helper.Md5(ts + ConfigurationManager.AppSettings["Key"])
|
||||
}
|
||||
};
|
||||
return r;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
TcpClient.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using SuperSocket.ProtoBase;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Entities
|
||||
{
|
||||
public class ReceiveFilter : FixedHeaderReceiveFilter<TransInfo>
|
||||
{
|
||||
public ReceiveFilter() : base(10)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
|
||||
{
|
||||
bufferStream.ReadInt16();
|
||||
var len = GetStrLength(bufferStream) + GetDataLength(bufferStream);
|
||||
return len;
|
||||
}
|
||||
|
||||
public override TransInfo ResolvePackage(IBufferStream bufferStream)
|
||||
{
|
||||
((Stream)bufferStream).Position = 2;
|
||||
var strLength = GetStrLength(bufferStream);
|
||||
var dataLength = GetDataLength(bufferStream);
|
||||
var allLength = strLength + dataLength;
|
||||
|
||||
|
||||
byte[] buffer = new byte[strLength];
|
||||
bufferStream.Read(buffer, 0, strLength);
|
||||
var json = Encoding.UTF8.GetString(buffer);
|
||||
var r = JsonConvert.DeserializeObject<TransInfo>(json);
|
||||
if (r == null)
|
||||
{
|
||||
return new TransInfo();
|
||||
}
|
||||
buffer = new byte[dataLength];
|
||||
bufferStream.Read(buffer, 0, dataLength);
|
||||
r.Data = buffer;
|
||||
return r;
|
||||
}
|
||||
|
||||
/*protected override TransInfo ResolveRequestInfo(ArraySegment<byte> header, byte[] bodyBuffer, int offset, int length)
|
||||
{
|
||||
var strLength = BitConverter.ToInt32(header.Array, header.Offset + 2);
|
||||
var dataLength = BitConverter.ToInt32(header.Array, header.Offset + 6);
|
||||
|
||||
var json = Encoding.UTF8.GetString(bodyBuffer.Skip(offset).Take(strLength).ToArray());
|
||||
var r = JsonConvert.DeserializeObject<TransInfo>(json);
|
||||
r.Data = bodyBuffer.Skip(offset + strLength).Take(dataLength).ToArray();
|
||||
return r;
|
||||
}*/
|
||||
|
||||
private int GetStrLength(IBufferStream bufferStream)
|
||||
{
|
||||
byte[] buffer = new byte[4];
|
||||
bufferStream.Read(buffer, 0, 4);
|
||||
var r = BitConverter.ToInt32(buffer, 0);
|
||||
return r;
|
||||
}
|
||||
|
||||
private int GetDataLength(IBufferStream bufferStream)
|
||||
{
|
||||
byte[] buffer = new byte[4];
|
||||
bufferStream.Read(buffer, 0, 4);
|
||||
var r = BitConverter.ToInt32(buffer, 0);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Entities
|
||||
{
|
||||
public class TransBody
|
||||
{
|
||||
public string TargetAppID { get; set; }
|
||||
public string AppID { get; set; }
|
||||
public string AppSecret { get; set; }
|
||||
public string Action { get; set; }
|
||||
public string Param { get; set; }
|
||||
public string Key { get; set; }
|
||||
public string Url { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Entities
|
||||
{
|
||||
public class TransHead
|
||||
{
|
||||
public string AppID { get; set; }
|
||||
public string AppSecret { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 1 注册 2 请求
|
||||
/// </summary>
|
||||
public int Type { get; set; }
|
||||
|
||||
public string Param { get; set; }
|
||||
public string ServiceSecret { get; set; }
|
||||
|
||||
public long TimeStamp { get; set; }
|
||||
|
||||
public string Sign { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using Newtonsoft.Json;
|
||||
using SuperSocket.ProtoBase;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Entities
|
||||
{
|
||||
public class TransInfo : IPackageInfo
|
||||
{
|
||||
public TransHead Head { get; set; }
|
||||
|
||||
public TransBody Body { get; set; }
|
||||
|
||||
public TransResult TransResultInfo { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public byte[] Data { get; set; }
|
||||
|
||||
public static TransInfo Parse(byte[] buffer)
|
||||
{
|
||||
var strlength = BitConverter.ToInt32(buffer, 2);
|
||||
var byteLength = BitConverter.ToInt32(buffer, 6);
|
||||
var json = Encoding.UTF8.GetString(buffer.Skip(10).Take(strlength).ToArray());
|
||||
if (json == String.Empty)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var r = JsonConvert.DeserializeObject<TransInfo>(json);
|
||||
r.Data = buffer.Skip(10 + strlength).Take(byteLength).ToArray();
|
||||
return r;
|
||||
}
|
||||
|
||||
public byte[] ToByte()
|
||||
{
|
||||
List<byte> bufferHead = new List<byte>();
|
||||
bufferHead.AddRange(Encoding.UTF8.GetBytes("@@"));
|
||||
List<byte> bufferBody = new List<byte>();
|
||||
var json = JsonConvert.SerializeObject(this);
|
||||
bufferBody.AddRange(Encoding.UTF8.GetBytes(json));
|
||||
var strLength = bufferBody.Count;
|
||||
if (Data != null)
|
||||
{
|
||||
bufferBody.AddRange(Data);
|
||||
}
|
||||
bufferHead.AddRange(BitConverter.GetBytes(strLength));
|
||||
bufferHead.AddRange(BitConverter.GetBytes(Data == null ? 0 : Data.Length));
|
||||
bufferHead.AddRange(bufferBody);
|
||||
return bufferHead.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Entities
|
||||
{
|
||||
public class TransResult
|
||||
{
|
||||
public string Key { get; set; }
|
||||
|
||||
public int Code { get; set; }
|
||||
|
||||
public string Message { get; set; }
|
||||
|
||||
public byte[] Data { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{41181ED6-F47D-485E-A8F1-B2BDB52DC902}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Getf.Service.Transfer.Client.WinService</RootNamespace>
|
||||
<AssemblyName>Getf.Service.Transfer.Client.WinService</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.8\lib\net40-full\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SuperSocket.ClientEngine, Version=0.10.0.0, Culture=neutral, PublicKeyToken=ee9af13f57f00acc, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SuperSocket.ClientEngine.0.10.0\lib\net40-client\SuperSocket.ClientEngine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SuperSocket.ProtoBase, Version=1.7.0.17, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SuperSocket.ProtoBase.1.7.0.17\lib\net40\SuperSocket.ProtoBase.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ClientService.cs" />
|
||||
<Compile Include="Entities\ReceiveFilter.cs" />
|
||||
<Compile Include="Entities\TransBody.cs" />
|
||||
<Compile Include="Entities\TransHead.cs" />
|
||||
<Compile Include="Entities\TransInfo.cs" />
|
||||
<Compile Include="Entities\TransResult.cs" />
|
||||
<Compile Include="Helpers\LogHelper.cs" />
|
||||
<Compile Include="Helpers\Md5Helper.cs" />
|
||||
<Compile Include="Helpers\TypeHelper.cs" />
|
||||
<Compile Include="IDataHandler.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="TcpClient.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Helpers
|
||||
{
|
||||
public class LogHelper
|
||||
{
|
||||
log4net.ILog MLog;
|
||||
|
||||
public LogHelper()
|
||||
{
|
||||
|
||||
MLog = log4net.LogManager.GetLogger("Getf.Transfer.Client");
|
||||
}
|
||||
|
||||
public void Debug(string msg)
|
||||
{
|
||||
MLog.Debug(msg);
|
||||
}
|
||||
|
||||
public void Error(string msg)
|
||||
{
|
||||
MLog.Error(msg);
|
||||
}
|
||||
|
||||
public void Error(Exception exception)
|
||||
{
|
||||
MLog.Error(exception.Message, exception);
|
||||
}
|
||||
|
||||
public void Info(string msg)
|
||||
{
|
||||
MLog.Info(msg);
|
||||
}
|
||||
|
||||
public void Warn(string msg)
|
||||
{
|
||||
MLog.Warn(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Helpers
|
||||
{
|
||||
public static class Md5Helper
|
||||
{
|
||||
public static string Md5(string str)
|
||||
{
|
||||
MD5 md5 = MD5.Create();
|
||||
byte[] data = Encoding.UTF8.GetBytes(str);
|
||||
data = md5.ComputeHash(data);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
sb.Append(data[i].ToString("x2"));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService.Helpers
|
||||
{
|
||||
public static class TypeHelper
|
||||
{
|
||||
public static DateTime ToDateTime(long timeStamp)
|
||||
{
|
||||
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
|
||||
DateTime dt = startTime.AddSeconds(timeStamp);
|
||||
return dt;
|
||||
}
|
||||
public static long GetTimeStamp()
|
||||
{
|
||||
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
|
||||
long t = (long)(DateTime.Now - startTime).TotalSeconds;
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Getf.Service.Transfer.Client.WinService.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService
|
||||
{
|
||||
public interface IDataHandler
|
||||
{
|
||||
TransInfo HandlerData(TransInfo srcData);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("Getf.Service.Transfer.Client.WinService")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Hewlett-Packard")]
|
||||
[assembly: AssemblyProduct("Getf.Service.Transfer.Client.WinService")]
|
||||
[assembly: AssemblyCopyright("Copyright © Hewlett-Packard 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("41181ed6-f47d-485e-a8f1-b2bdb52dc902")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
62
93_nei/Getf.Service.Transfer.Client.WinService/TcpClient.cs
Normal file
62
93_nei/Getf.Service.Transfer.Client.WinService/TcpClient.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using Getf.Service.Transfer.Client.WinService.Entities;
|
||||
using SuperSocket.ClientEngine;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService
|
||||
{
|
||||
public class TcpClient : IDisposable
|
||||
{
|
||||
//private Thread SendHeartThread;
|
||||
|
||||
string Ip { get; set; }
|
||||
int Port { get; set; }
|
||||
EasyClient EasyClient;
|
||||
bool IsHeartLosted = false;
|
||||
Action<object, EventArgs> OnClosed;
|
||||
public bool IsConnected { get { return EasyClient.IsConnected; } }
|
||||
|
||||
public TcpClient(string ip, int port, Action<TransInfo> onDataGeted, Action<object, EventArgs> onConnected, Action<object, EventArgs> onClosed, Action<object, EventArgs> onError)
|
||||
{
|
||||
Ip = ip;
|
||||
Port = port;
|
||||
|
||||
EasyClient = new EasyClient();
|
||||
EasyClient.Initialize(new ReceiveFilter(), onDataGeted);
|
||||
EasyClient.Connected += new EventHandler(onConnected);
|
||||
EasyClient.Closed += EasyClient_Closed;
|
||||
EasyClient.Error += new EventHandler<ErrorEventArgs>(onError);
|
||||
EasyClient.ConnectAsync(new IPEndPoint(IPAddress.Parse(Ip), Port));
|
||||
OnClosed = onClosed;
|
||||
|
||||
//SendHeartThread = new Thread();
|
||||
}
|
||||
|
||||
public void Send(byte[] data)
|
||||
{
|
||||
EasyClient.Send(data);
|
||||
}
|
||||
|
||||
private void EasyClient_Closed(object sender, EventArgs e)
|
||||
{
|
||||
if (IsHeartLosted) return;
|
||||
OnClosed?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
public void HeartLost()
|
||||
{
|
||||
//IsHeartLosted = true;
|
||||
EasyClient.Close();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
HeartLost();
|
||||
//SendHeartThread.Abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
using Getf.Service.Transfer.Client.WinService.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
namespace Getf.Service.Transfer.Client.WinService
|
||||
{
|
||||
public class TcpClientService : IDisposable
|
||||
{
|
||||
private Socket _SocketClient;
|
||||
private readonly string _IP;
|
||||
private readonly int _Port;
|
||||
|
||||
public event Action<TcpClientService> OnError;
|
||||
|
||||
public event Action<TcpClientService> OnConnected;
|
||||
|
||||
public event Action<TcpClientService, byte[]> OnDataGeted;
|
||||
|
||||
private byte[] _Buffer;
|
||||
|
||||
public bool IsConnected = false;
|
||||
|
||||
bool IsDisposed = false;
|
||||
LogHelper _LogHelper;
|
||||
|
||||
public TcpClientService(string ip, int port)
|
||||
{
|
||||
_IP = ip;
|
||||
_Port = port;
|
||||
_LogHelper = new LogHelper();
|
||||
_Buffer = new byte[100 * 1024 * 1024];
|
||||
}
|
||||
|
||||
public void Connect()
|
||||
{
|
||||
if (_SocketClient != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
_SocketClient.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
|
||||
IPAddress ipAddress = IPAddress.Parse(_IP);
|
||||
var endPoint = new IPEndPoint(ipAddress, _Port);
|
||||
_LogHelper.Debug("开始连接");
|
||||
_SocketClient.BeginConnect(endPoint, new AsyncCallback(Connected), null);
|
||||
}
|
||||
|
||||
private void Connected(IAsyncResult asyncResult)
|
||||
{
|
||||
try
|
||||
{
|
||||
_SocketClient.EndConnect(asyncResult);
|
||||
_LogHelper.Debug("连接成功");
|
||||
IsConnected = true;
|
||||
TriggerConnected();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("连接失败原因为:" + e.Message);
|
||||
TriggerError();
|
||||
}
|
||||
}
|
||||
|
||||
public void ReceiveLoop()
|
||||
{
|
||||
Thread thread = new Thread(() =>
|
||||
{
|
||||
while (!IsDisposed)
|
||||
{
|
||||
Receive();
|
||||
}
|
||||
});
|
||||
thread.Start();
|
||||
}
|
||||
|
||||
public void Receive()
|
||||
{
|
||||
ManualResetEvent manualResetEvent = new ManualResetEvent(false);
|
||||
_LogHelper.Debug("开始监听接收数据");
|
||||
try
|
||||
{
|
||||
_SocketClient.BeginReceive(_Buffer, 0, _Buffer.Length, SocketFlags.None, new AsyncCallback(Received), new object[] { manualResetEvent, _Buffer });
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("接收数据失败原因为:" + e.Message);
|
||||
Thread.Sleep(100000);
|
||||
manualResetEvent.Set();
|
||||
}
|
||||
manualResetEvent.WaitOne();
|
||||
manualResetEvent.Dispose();
|
||||
}
|
||||
|
||||
private void Received(IAsyncResult asyncResult)
|
||||
{
|
||||
if (IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var objs = asyncResult.AsyncState as object[];
|
||||
var manualResetEvent = objs[0] as ManualResetEvent;
|
||||
var buffer = objs[1] as byte[];
|
||||
try
|
||||
{
|
||||
var length = _SocketClient.EndReceive(asyncResult);
|
||||
_LogHelper.Debug("接收到服务器推送的数据");
|
||||
TriggerDataGeted(buffer);
|
||||
if (buffer != null)
|
||||
{
|
||||
Array.Clear(buffer, 0, length);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("接收到服务器推送的数据失败原因为:" + e.Message);
|
||||
TriggerError();
|
||||
}
|
||||
manualResetEvent.Set();
|
||||
}
|
||||
|
||||
public void Send(byte[] buffer)
|
||||
{
|
||||
_LogHelper.Debug("开始发送数据");
|
||||
try
|
||||
{
|
||||
_SocketClient.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(Sended), null);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("发送数据失败原因为:" + e.Message);
|
||||
TriggerError();
|
||||
}
|
||||
}
|
||||
|
||||
private void Sended(IAsyncResult asyncResult)
|
||||
{
|
||||
if (IsDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
_SocketClient.EndSend(asyncResult);
|
||||
_LogHelper.Debug("发送数据成功");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_LogHelper.Error("发送数据失败原因为:" + e.Message);
|
||||
TriggerError();
|
||||
}
|
||||
}
|
||||
|
||||
private void TriggerError()
|
||||
{
|
||||
IsConnected = false;
|
||||
if (OnError != null)
|
||||
{
|
||||
OnError(this);
|
||||
}
|
||||
}
|
||||
private void TriggerConnected()
|
||||
{
|
||||
if (OnConnected != null)
|
||||
{
|
||||
OnConnected(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void TriggerDataGeted(byte[] buffer)
|
||||
{
|
||||
if (OnDataGeted != null)
|
||||
{
|
||||
OnDataGeted(this, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
IsDisposed = true;
|
||||
try
|
||||
{
|
||||
_Buffer = null;
|
||||
if (_SocketClient != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_SocketClient.Disconnect(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
_SocketClient.Dispose();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="ServiceAddressInfo" value="127.0.0.1:8888" />
|
||||
<add key="HandlerClassInfo" value="" />
|
||||
<add key="AppName" value="Xzsp" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
32464
93_nei/Getf.Service.Transfer.Client.WinService/bin/Debug/log4net.xml
Normal file
32464
93_nei/Getf.Service.Transfer.Client.WinService/bin/Debug/log4net.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")]
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
6de1eb1e10fe7615b358b3ab8e2ac617ff084569
|
||||
@@ -0,0 +1,32 @@
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.dll.config
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.pdb
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\log4net.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ClientEngine.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ProtoBase.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\log4net.xml
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.pdb
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.xml
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ProtoBase.xml
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.AssemblyReference.cache
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.CoreCompileInputs.cache
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.CopyComplete
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.dll
|
||||
D:\WORK\C宁波拆迁\transfer\Services\Getf.Service.Transfer\Src\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.pdb
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.dll.config
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Getf.Service.Transfer.Client.WinService.pdb
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\log4net.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ClientEngine.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ProtoBase.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\log4net.xml
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.pdb
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\Newtonsoft.Json.xml
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\bin\Debug\SuperSocket.ProtoBase.xml
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.AssemblyReference.cache
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.CoreCompileInputs.cache
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.csproj.CopyComplete
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.dll
|
||||
D:\WORK\C宁波拆迁\neiwai_transfer\93_nei\Getf.Service.Transfer.Client.WinService\obj\Debug\Getf.Service.Transfer.Client.WinService.pdb
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="log4net" version="2.0.8" targetFramework="net40" />
|
||||
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net40" />
|
||||
<package id="SuperSocket.ClientEngine" version="0.10.0" targetFramework="net40" />
|
||||
<package id="SuperSocket.ProtoBase" version="1.7.0.17" targetFramework="net40" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user