编译通过,测试未通过!!! 大量精简代码,Accept、Receive等采用单个委托,不支持线程池 引入新的缓冲池 TcpServer和NetServer加上会话集合开关,默认不使用,大量连接时会话集合非常影响性能
Stone authored at 2013-09-02 21:04:25
2.00 KiB
X
using System;
using System.Net;
using System.Net.Sockets;
using NewLife.Net.Common;

namespace NewLife.Net.Sockets
{
    /// <summary>基础Socket接口</summary>
    /// <remarks>
    /// 主要是对Socket封装一层,把所有异步操作结果转移到事件中去。
    /// </remarks>
    public interface ISocket : ISocketAddress, IDisposable2
    {
        #region 属性
        /// <summary>基础Socket对象</summary>
        Socket Socket { get; set; }

        /// <summary>监听本地地址</summary>
        IPAddress Address { get; set; }

        /// <summary>监听端口</summary>
        Int32 Port { get; set; }

        /// <summary>地址族</summary>
        AddressFamily AddressFamily { get; set; }

        ///// <summary>是否使用线程池处理事件。建议仅在事件处理非常耗时时使用线程池来处理。</summary>
        //bool UseThreadPool { get; set; }

        ///// <summary>禁用接收延迟,收到数据后马上建立异步读取再处理本次数据</summary>
        //bool NoDelay { get; set; }

        ///// <summary>允许将套接字绑定到已在使用中的地址。</summary>
        //bool ReuseAddress { get; set; }

        ///// <summary>缓冲区大小</summary>
        //int BufferSize { get; set; }

        ///// <summary>数据字典</summary>
        //IDictionary Items { get; }

        /// <summary>接收数据包统计信息,默认关闭,通过<see cref="IStatistics.Enable"/>打开。</summary>
        IStatistics Statistics { get; }

        /// <summary>异步操作计数</summary>
        Int32 AsyncCount { get; }
        #endregion

        #region 方法
        /// <summary>绑定本地终结点</summary>
        void Bind();

        /// <summary>关闭网络操作</summary>
        void Close();
        #endregion

        #region 事件
        /// <summary>错误发生/断开连接时</summary>
        event EventHandler<ExceptionEventArgs> Error;
        #endregion
    }
}