using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace HslCommunication.Core.Net
{
///
/// 网络会话信息
///
public class AppSession
{
#region Constructor
///
/// 实例化一个构造方法
///
public AppSession()
{
ClientUniqueID = Guid.NewGuid( ).ToString( "N" );
HybirdLockSend = new SimpleHybirdLock( );
}
#endregion
///
/// 传输数据的对象
///
internal Socket WorkSocket { get; set; }
internal SimpleHybirdLock HybirdLockSend { get; set; }
///
/// IP地址
///
public string IpAddress { get; internal set; }
///
/// 此连接对象连接的远程客户端
///
public IPEndPoint IpEndPoint { get; internal set; }
///
/// 远程对象的别名
///
public string LoginAlias { get; set; }
///
/// 心跳验证的时间点
///
public DateTime HeartTime { get; set; } = DateTime.Now;
///
/// 客户端的类型
///
public string ClientType { get; set; }
///
/// 客户端唯一的标识
///
public string ClientUniqueID { get; private set; }
///
/// UDP通信中的远程端
///
internal EndPoint UdpEndPoint = null;
///
/// 指令头缓存
///
internal byte[] BytesHead { get; set; } = new byte[HslProtocol.HeadByteLength];
///
/// 已经接收的指令头长度
///
internal int AlreadyReceivedHead { get; set; }
///
/// 数据内容缓存
///
internal byte[] BytesContent { get; set; }
///
/// 已经接收的数据内容长度
///
internal int AlreadyReceivedContent { get; set; }
///
/// 清除本次的接收内容
///
internal void Clear( )
{
BytesHead = new byte[HslProtocol.HeadByteLength];
AlreadyReceivedHead = 0;
BytesContent = null;
AlreadyReceivedContent = 0;
}
#region Object Override
///
/// 返回表示当前对象的字符串,以IP,端口,客户端名称组成
///
/// 字符串数据
public override string ToString()
{
return $"[{IpEndPoint}] [{LoginAlias}]";
}
#endregion
}
}