ab56a9bcf7
SVN-Revision: r240
195 lines
7.2 KiB
C#
195 lines
7.2 KiB
C#
/******************************
|
|
* 说明:Socket客户端
|
|
* 创建人:龚宇超
|
|
* 创建日期:2018-01-22
|
|
* 修改人:
|
|
* 修改日期:
|
|
* 修改备注:
|
|
* 版本:1.0.0.0
|
|
******************************/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Lskj.AttachStart.Service;
|
|
using Lskj.Util;
|
|
using System.Data;
|
|
using Lskj.Model;
|
|
using Lskj.Core;
|
|
using System.Threading;
|
|
|
|
namespace Lskj.Attach.Client.Model
|
|
{
|
|
/// <summary>
|
|
/// Class SocketClient.
|
|
/// </summary>
|
|
public class SocketClient
|
|
{
|
|
private LSSocket _socket;
|
|
/// <summary>
|
|
/// Socket对象
|
|
/// </summary>
|
|
/// <value>The socket object.</value>
|
|
public LSSocket SocketObj { get { return this._socket; } }
|
|
|
|
/// <summary>
|
|
/// <para>说明:检查Socket状态</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-22 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
|
|
public bool CheckSocketState()
|
|
{
|
|
return this._socket != null && this._socket.SocketState == 1;
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:连接Socket服务器</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-22 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
public void ConnectServer()
|
|
{
|
|
try
|
|
{
|
|
string port = DBConfig.Instance.Internet ? SystemInfo.Instance.InternetPort : SystemInfo.Instance.LanPort;
|
|
string ip = DBConfig.Instance.Internet ? SystemInfo.Instance.InternetIp : SystemInfo.Instance.LanIp;
|
|
if(string.IsNullOrEmpty(port))port ="7859";
|
|
|
|
LogHelper.Instance.WriteLog(string.Format("准备连接服务器:{0}", ip + ":" + port));
|
|
|
|
this._socket = new LSSocket();
|
|
this._socket.Connect(ip, uint.Parse(port));
|
|
this._socket.ParseReceiveDataEvent += new LSSocket.ParseReceiveDataEventHandle(_socket_ParseReceiveDataEvent);
|
|
this._socket.SocketCloseEvent += new LSASyncSocket.SocketCloseEventHandle(_socket_SocketCloseEvent);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Instance.WriteError(ex);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:释放所有资源</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-22 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
public void FreeAllResources()
|
|
{
|
|
Thread.Sleep(1000);
|
|
GlobalVariable.NeedExit = true;
|
|
Thread.Sleep(1000);
|
|
GlobalVariable.ThreadObj.Interrupt();
|
|
LSFileManage.dispose();
|
|
}
|
|
public void OnHeardTimer()
|
|
{
|
|
S2C2S_Heart structObj = new S2C2S_Heart(true);
|
|
this._socket.Send(structObj);
|
|
}
|
|
public void ProcessRevDataFromServer()
|
|
{
|
|
Thread.CurrentThread.IsBackground = true;
|
|
LSSocketRev socketRev = null;
|
|
while (!GlobalVariable.bNeedExit)
|
|
{
|
|
Exception exception;
|
|
try
|
|
{
|
|
try
|
|
{
|
|
socketRev = LSQueueManage.GetSocketRevData();
|
|
LSWriteLog.WriteTrace("------------------ProcessRevDataFromServer----已经获取到列表数据", new object[0]);
|
|
if (GlobalVariable.bNeedExit)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception exception1)
|
|
{
|
|
exception = exception1;
|
|
PubUtils.WriteLog("ProcessRevDataFromServer 前面的 error: {0}", new object[] { exception.Message.ToString() });
|
|
throw new Exception(exception.Message.ToString());
|
|
}
|
|
GlobalVariable.BaseFormObj.ParseDataFromServerMsg(socketRev);
|
|
}
|
|
catch (ThreadAbortException exception2)
|
|
{
|
|
PubUtils.WriteLog("ProcessRevDataFromServer ThreadAbortException: {0}", new object[] { exception2 });
|
|
break;
|
|
}
|
|
catch (ThreadInterruptedException exception3)
|
|
{
|
|
PubUtils.WriteLog("ProcessRevDataFromServer ThreadInterruptedException: {0}", new object[] { exception3 });
|
|
break;
|
|
}
|
|
catch (Exception exception6)
|
|
{
|
|
exception = exception6;
|
|
if (socketRev != null)
|
|
{
|
|
PubUtils.WriteLog("ProcessRevDataFromServer error: {0},ProxySocket.SocketState: {1} ,byte data is:\n{2}", new object[] { exception, socketRev.ClientSocket.SocketState, socketRev.ByteData });
|
|
}
|
|
else
|
|
{
|
|
PubUtils.WriteLog("ProcessRevDataFromServer error: {0}", new object[] { exception });
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (socketRev != null)
|
|
{
|
|
socketRev = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// <para>说明:Scoket关闭</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-22 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="AsyncSocket">The asynchronous socket.</param>
|
|
private void _socket_SocketCloseEvent(LSASyncSocket AsyncSocket)
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:Socket接收到数据触发</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-22 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="ProxySocket">The proxy socket.</param>
|
|
/// <param name="byteData">The byte data.</param>
|
|
private void _socket_ParseReceiveDataEvent(LSSocket ProxySocket, byte[] byteData)
|
|
{
|
|
LSSocketRev socketRev = new LSSocketRev
|
|
{
|
|
ClientSocket = ProxySocket,
|
|
ByteData = byteData
|
|
};
|
|
LSQueueManage.InsertSocketRevData(socketRev);
|
|
LogHelper.Instance.WriteLog("OnRevServerSocketData 插入列表数据执行完毕.");
|
|
}
|
|
}
|
|
}
|