Пример #1
0
 private void Dismantle(NFNetObject netObject)
 {
     // TOOD:
 }
Пример #2
0
        private void ProcessAccept(SocketAsyncEventArgs args)
        {
            Socket sock = args.AcceptSocket;
            if (sock.Connected)
            {
                try
                {
                    SocketAsyncEventArgs readEventArgs = mxReadWritePool.Pop();
                    if (null != readEventArgs)
                    {
                        NFNetObject netObject = new NFNetObject(sock, mnBufferSize);
                        readEventArgs.UserToken = netObject;
                        Interlocked.Increment(ref mnConnectedSize);
                        Console.WriteLine("Accepted a new client connection. Now connected clients is {0}", mnConnectedSize);

                        //// 添加管理
                        //mxNetObjectMap.Keys.ToString().
                        //mxNetObjectMap.Add(mnConnectedSize, netObject);

                        if (!sock.ReceiveAsync(readEventArgs))
                        {
                            ProcessRecv(readEventArgs);
                        }
                    }
                    else
                    {
                        Console.WriteLine("There are no more available sockets to allocate.");
                    }
                }
                catch (SocketException ex)
                {
                    NFNetObject netObject = args.UserToken as NFNetObject;
                    Console.WriteLine("Error when processing data received from {0}, Exception:{1}", netObject.GetSocket().RemoteEndPoint, ex.ToString());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(" Exception:{0}", ex.ToString());
                }

                StartAccept(args);
            }
        }
Пример #3
0
        private void CloseClientSocket(SocketAsyncEventArgs args, NFNetObject netObject)
        {
            netObject.Close();

            mxSemaphore.Release();
            Interlocked.Decrement(ref mnConnectedSize);
            Console.WriteLine("A client has been disconnected from server. Now client count is {0}", mnConnectedSize);

            mxReadWritePool.Push(args);
        }