private void Dismantle(NFNetObject netObject) { // TOOD: }
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); } }
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); }