Exemplo n.º 1
0
        private void GetAccepted(UniNetObject AcceptedUniObject)
        {
            if (AcceptedUniObject.ObjectError != Error.NetCoreError.Success)
            {
                StartAccept(AcceptedUniObject);
                return;
            }
            NetCore.Error.NetCoreException err;
            UniNetObject clientUniObject = new UniNetObject();

            clientUniObject.SetProtocol(_Callback._ProtocolOp);
            _BufferManager.SetBuffer(clientUniObject.SetBuffer, 4096);
            clientUniObject.SetCompletedHandler(ProcessIO);
            clientUniObject = _Callback._ProtocolOp.GetAcceptedUniObject(AcceptedUniObject, ref clientUniObject);
            _Callback.Accepted(clientUniObject, out err);
            if (clientUniObject.BufferLength != 0)
            {
                _Callback.Received(clientUniObject.Buffer, clientUniObject, out err, clientUniObject.stateObject);
            }
            clientUniObject.BufferLength = 0;
            if (err != null)
            {
                //ProcessBadConnection(uniObject);
                StartAccept(AcceptedUniObject);
                return;
            }
            //var clientArgs=_ConnectPool.Pop();
            //clientArgs.UserToken=new SocketStateObject(clientSocket);
            clientUniObject.LastOperation = UniNetOperation.Receive;
            if (!clientUniObject.ReceiveAsync(clientUniObject))
            {
                ProcessReceive(clientUniObject);
            }
            clientUniObject.ObjectError = Error.NetCoreError.IOPending;
            StartAccept(AcceptedUniObject);
        }
Exemplo n.º 2
0
        //[MethodImpl(MethodImplOptions.NoOptimization | MethodImplOptions.NoInlining)]
        private void ProcessConnected(SocketAsyncEventArgs connectionArgs)
        {
            NetCore.Error.NetCoreException err;
            var state = _Callback.Connected(connectionArgs.ConnectSocket, out err);

            if (err != null)
            {
                connectionArgs.Dispose();
                return;
            }
            connectionArgs.UserToken = new SocketStateObject(connectionArgs.ConnectSocket, state);
            _BufferManager.SetBuffer(connectionArgs.SetBuffer, 4096);
            if (!connectionArgs.ConnectSocket.ReceiveAsync(connectionArgs))
            {
                ProcessReceive(connectionArgs);
            }
        }
Exemplo n.º 3
0
        public override void SetServer(string ip, int port, CallbackCollection callbackCollection, int MAX_LISTEN)
        {
            _BufferManager = new SimpleBuffer();
            //_BufferManager = new MicrosoftBuffer(4096 * 10, 4096);
            _ConnectPool = new SocketAsyncPool();
            _ConnectPool.Init(MAX_LISTEN);
            for (int i = 0; i < MAX_LISTEN; i++)
            {
                SocketAsyncEventArgs args = new SocketAsyncEventArgs();
                args.Completed += new EventHandler <SocketAsyncEventArgs>(ProcessIO);
                //byte[] buf = new byte[4096];
                _BufferManager.SetBuffer(args.SetBuffer, 4096);
                _ConnectPool.InitPush(args);
            }
            _IpAddress = ip != null?
                         IPAddress.Parse(ip) :
                             IPAddress.Any;

            _Port       = port;
            _MAX_LISTEN = MAX_LISTEN;
            _Callback   = callbackCollection;
            _Type       = CoreType.Server;
        }