/// <summary> /// 释放资源 /// </summary> /// <param name="disposing">是否也释放托管资源</param> protected virtual void Dispose(bool disposing) { this.CloseSocket(); this.recvEventArg.Dispose(); if (disposing) { this.RemoteEndPoint = null; this.recvBuilder = null; this.TagBag = null; this.socketRoot = null; } }
/// <summary> /// 调试视图 /// </summary> /// <param name="buidler">查看的对象</param> public DebugView(ByteBuilder buidler) { this.buidler = buidler; }
/// <summary> /// 输出文本内容 /// </summary> /// <param name="content">内容</param> public bool Write(string content) { if (content == null) { content = string.Empty; } var buffer = new ByteBuilder(Endians.Little); var contentBytes = this.Charset.GetBytes(content); if (this.wroteHeader == false) { this.wroteHeader = true; var headerByes = this.GetHeaderBytes(contentBytes.Length); buffer.Add(headerByes); } buffer.Add(contentBytes); return this.TrySend(buffer.ToByteRange()); }
/// <summary> /// 当接收到远程端的数据时,将触发此方法 /// 此方法用于处理和分析收到的数据 /// 如果得到一个数据包,将触发OnRecvComplete方法 /// [注]这里只需处理一个数据包的流程 /// </summary> /// <param name="recvBuilder">接收到的历史数据</param> /// <returns>如果不够一个数据包,则请返回null</returns> protected abstract T OnReceive(ByteBuilder recvBuilder);
/// <summary> /// 当接收到远程端的数据时,将触发此方法 /// 此方法用于处理和分析收到的数据 /// 如果得到一个数据包,将触发OnRecvComplete方法 /// [注]这里只需处理一个数据包的流程 /// </summary> /// <param name="client">客户端</param> /// <param name="recvBuilder">接收到的历史数据</param> /// <returns>如果不够一个数据包,则请返回null</returns> protected abstract T OnReceive(SocketAsync <T> client, ByteBuilder recvBuilder);