/// <summary>
        /// 销毁由 <see cref="CreateServer"/> 创建的服务端对象
        /// <para>注意:静态函数,非引用参数 server, 需实例变量 设为 null </para>
        /// </summary>
        /// <param name="server"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public static void DisposeServer(this HPSocket.IServer server)
        {
            if (server == null)
            {
                throw new ArgumentNullException("参数 server 不能为空");
            }

            ushort port    = server.Port;
            string address = server.Address;
            Type   type    = server.GetType();

            SpaceCGUtils.RemoveAnonymousEvents(server, "OnSend");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnClose");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnAccept");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnReceive");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnShutdown");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnHandShake");
            SpaceCGUtils.RemoveAnonymousEvents(server, "OnPrepareListen");

            List <IntPtr> clients = server.GetAllConnectionIds();

            foreach (IntPtr client in clients)
            {
                if (server.IsConnected(client))
                {
                    server.Disconnect(client, true);
                }
            }

            server.Dispose();
            server = null;

            SpaceCGUtils.Log.InfoFormat("服务端({0}) {1}:{2} 已停止服务并销毁释放", type, address, port);
        }
        /// <summary>
        /// HPSokcet.IServer 广播数据
        /// </summary>
        /// <param name="server"></param>
        /// <param name="connId">不对此 connId 广播,或可为 null </param>
        /// <param name="bytes"></param>
        public static void Broadcast(this HPSocket.IServer server, IntPtr connId, byte[] bytes)
        {
            if (server == null)
            {
                throw new ArgumentNullException("参数 server 不能为空");
            }

            List <IntPtr> clients = server.GetAllConnectionIds();

            foreach (IntPtr client in clients)
            {
                if (client != connId && server.IsConnected(client))
                {
                    server.Send(client, bytes, bytes.Length);
                }
            }
        }