using System;
|
using System.Diagnostics;
|
using System.Net.Sockets;
|
|
namespace Bro.Common.Link
|
{
|
/// <summary>
|
/// TCP连接
|
/// </summary>
|
public class TCPLink : LinkBase
|
{
|
// 网络连接数据流
|
public NetworkStream netStream = null;
|
// 远端信息
|
public string remoteInfo {get;set;}
|
// 是否远端关闭
|
public bool IsRemoteDisconn {get;set;}
|
|
public TCPLink(NetworkStream stream)
|
{
|
this.netStream = stream;
|
this.IsRemoteDisconn = false;
|
}
|
|
public TCPLink()
|
{
|
this.IsRemoteDisconn = false;
|
}
|
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
/// <returns></returns>
|
public override bool Init()
|
{
|
// TODO:
|
return true;
|
}
|
|
/// <summary>
|
/// 打开TCP连接
|
/// </summary>
|
/// <returns></returns>
|
public override bool Open()
|
{
|
// TODO:
|
return true;
|
}
|
|
/// <summary>
|
/// 关闭TCP连接
|
/// </summary>
|
public override void Close()
|
{
|
// TODO:
|
if ( null == this.netStream )
|
{
|
return;
|
}
|
|
try
|
{
|
this.netStream.Close();
|
this.netStream = null;
|
|
this.IsRemoteDisconn = true;
|
}
|
catch(Exception ex)
|
{
|
Trace.TraceError("TCPLink:{0} Close fail, ex:{1}-{2}", this.Desp, ex.Message, ex.StackTrace);
|
}
|
}
|
|
/// <summary>
|
/// 销毁
|
/// </summary>
|
public override void Fnit()
|
{
|
this.Close();
|
}
|
|
/// <summary>
|
/// 接收数据
|
/// </summary>
|
/// <returns></returns>
|
public override int Recv(byte[] rcvBuf, int bufLen)
|
{
|
int len = -1;
|
try
|
{
|
len = netStream.Read(rcvBuf, 0, bufLen);
|
}
|
catch(Exception ex)
|
{
|
this.IsRemoteDisconn = true;
|
|
Trace.TraceError("TCPLink:{0} Recv fail, ex:{1}-{2}", this.Desp, ex.Message, ex.StackTrace);
|
}
|
|
return len;
|
}
|
|
/// <summary>
|
/// 发送数据
|
/// </summary>
|
/// <param name="sndBuf"></param>
|
/// <param name="bufLen"></param>
|
public override bool Send(byte[] sndBuf, int offset, int len)
|
{
|
try
|
{
|
netStream.Write(sndBuf, offset, len);
|
|
return true;
|
}
|
catch(Exception ex)
|
{
|
this.IsRemoteDisconn = true;
|
|
Trace.TraceError("TCPLink:{0} Send fail, ex:{1}-{2}", this.Desp, ex.Message, ex.StackTrace);
|
}
|
|
return false;
|
}
|
}
|
}
|