Beispiel #1
0
        private void InitSocketAsyncPool()
        {
            int netReceiveBufferSize = ServerConfig.NetReceiveBufferSize;

            if (netReceiveBufferSize <= 0)
            {
                netReceiveBufferSize = 1024;
            }

            _BufferManager = new BufferManager(netReceiveBufferSize * ServerConfig.MaxConnects, netReceiveBufferSize);

            try
            {
                _BufferManager.InitBuffer();
            }
            catch (Exception ex)
            {
                Logger.Error(true, "", ex);
                throw;
            }

            _SocketAsyncPool = new SocketAsyncEventArgsProxyPool();

            SocketAsyncEventArgsEx socketEventArg;

            for (int i = 0; i < ServerConfig.MaxConnects; i++)
            {
                socketEventArg = new SocketAsyncEventArgsEx();
                _BufferManager.SetBuffer(socketEventArg);
                socketEventArg.Initialize();//初始化缓存接口
                _SocketAsyncPool.Push(new SocketAsyncEventArgsProxy(socketEventArg));
            }
        }
 /// <summary>
 /// 构造函数 udp
 /// <para>正式调用还需执行Init()</para>
 /// </summary>
 internal RemoteConnection(EndPoint remoteEndPoint, ServerSocket service)
 {
     isAlive       = true;
     socketSvrMgr  = service;
     socket        = Socket.FillAsClient(remoteEndPoint);
     sendEventArgs = new SocketAsyncEventArgsEx(this, remoteEndPoint, null);
 }
Beispiel #3
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="esfSocket">ESFSocket对象</param>
        /// <param name="numMaxBufferSize">接受数据最大容量</param>
        public BaseClientSocket(Socket esfSocket, int numMaxBufferSize)
        {
            clientSocket          = esfSocket;
            this.numMaxBufferSize = numMaxBufferSize + SweetStream.OUTSOURCING_SIZE;
            RBuffer = new SweetStream();

            sendEventArgs     = new SocketAsyncEventArgsEx(clientSocket, clientSocket.endPoint, IO_Completed);
            readWriteEventArg = new SocketAsyncEventArgs()
            {
                UserToken = clientSocket, RemoteEndPoint = clientSocket.endPoint
            };
            readWriteEventArg.Completed += new EventHandler <SocketAsyncEventArgs>(IO_Completed);
        }
        /// <summary>
        /// 初始化
        /// </summary>
        internal void Init(Socket socket, EventHandler <System.Net.Sockets.SocketAsyncEventArgs> eventHandler)
        {
            receiveEventArgs           = new System.Net.Sockets.SocketAsyncEventArgs();
            receiveEventArgs.UserToken = this;

            connectDateTime = DateTime.Now;
            rBuffer         = new SweetStream();
            isAlive         = true;
            timeoutCount    = 0;

            this.socket = socket;
            if (this.socket != null)
            {
                sendEventArgs = new SocketAsyncEventArgsEx(this, socket, eventHandler);
                receiveEventArgs.AcceptSocket   = this.socket.GetSocket();
                receiveEventArgs.RemoteEndPoint = this.socket.endPoint;
            }
        }