C#:一个增强的TcpClient(五)构造函数

来源:互联网 发布:东莞光速网络 编辑:程序博客网 时间:2024/05/15 06:41
/* ----------------------------------------------------------文件名称:TcpClientPlus.cs作者:秦建辉MSN:splashcn@msn.comQQ:36748897博客:http://blog.csdn.net/jhqin开发环境:    Visual Studio V2010    .NET Framework 4 Client Profile版本历史:    V1.4    2012年04月24日            提供独立的通信线程    V1.3    2012年04月19日            提供AES 256位数据加密传输功能    V1.2    2012年03月30日            在流头部增加字节长度信息以方便读写    V1.1    2012年03月27日            增加异步读写,改进软件架构    V1.02012年03月16日实现TcpClient的异步连接(基于同事赵小亮的代码优化) 调用顺序:    1.实例化,视需要分别设置ConnectTimeout、ReadTimeout、WriteTimeout字段    2.如果未连接,则调用AsyncConnect建立连接    3.如果传输加密,设置SecretKey和Salt    4.重复调用ThreadTaskAllocation分发通信任务    5.调用Close关闭连接------------------------------------------------------------ */using System;using System.Net;using System.Net.Sockets;namespace Splash.Net.Sockets{    /// <summary>    /// 构造函数和析构函数    /// </summary>    public partial class TcpClientPlus : TcpClient    {               /// <summary>        /// 构造函数        /// </summary>        public TcpClientPlus() : base() { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="family">IP地址的地址族</param>        public TcpClientPlus(AddressFamily family) : base(family) { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="localEP">将网络端点表示为 IP 地址和端口号</param>        public TcpClientPlus(IPEndPoint localEP) : base(localEP) { }        /// <summary>        /// 构造函数        /// </summary>        /// <param name="address">主机名或者IP地址</param>        /// <param name="port">端口号</param>        public TcpClientPlus(String address, Int32 port)            : base()        {            // 判断address是主机名还是IP地址            try            {   // IPv4 使用以点分隔的四部分表示法,IPv6 使用冒号十六进制表示法                IPAddress ip = IPAddress.Parse(address);                // 远程主机由IP地址和端口号指定                Connect(ip, port);            }            catch (FormatException)            {                // 远程主机由主机名和端口号指定                Connect(address, port);            }        }        /// <summary>        /// 释放资源        /// </summary>        /// <param name="disposing">        ///     true:释放托管资源和非托管资源        ///     false:仅释放非托管资源        /// </param>        protected override void Dispose(bool disposing)        {               // 终止独立的通信线程            ThreadTaskAbort();            // 关闭加密传输模块            SecurityClose();            // 调用基类函数释放资源            base.Dispose(disposing);        }        /// <summary>        /// 析构函数        /// </summary>        ~TcpClientPlus()        {   // 仅释放非托管资源            Dispose(false);        }    }}


 

原创粉丝点击