Пример #1
0
        private void Item_Completed(object sender, SocketAsyncEventArgs e)
        {
            acceptEvent.Set();
            IChannelHandler handler = null;
            SocketArgEvent  arg     = new SocketArgEvent();
            IPEndPoint      point   = e.AcceptSocket.RemoteEndPoint as IPEndPoint;

            arg.remoteIP   = point.Address.ToString();
            arg.remotePort = point.Port;
            point          = e.AcceptSocket.LocalEndPoint as IPEndPoint;
            arg.localIP    = point.Address.ToString();
            arg.localPort  = point.Port;
            arg.chanel     = socketChannel;
            TCPSocketChannel channel = new TCPSocketChannel();

            channel.HandlerTypes   = this.handers;
            channel.Socket         = e.AcceptSocket;
            channel.SocketArgEvent = arg;
            arg.chanel             = channel;
            if (handers.TryGetValue(HanderType.ReadWrite, out handler))
            {
                handler.ChannelActive(arg);
            }
            lock (lock_obj)
            {
                channels.Add(arg);
            }
            Interlocked.Increment(ref m_numConnectedSockets);
            FreeArgEvent(e);
            WorkThread();
        }