Ejemplo n.º 1
0
        private void NewClientAccepted(System.Net.Sockets.Socket client, SuperSocket.ISocketSession session)
        {
            var ass     = session as SuperSocket.AsyncSocketSession;
            var tcpConn = mPool.AllocConnect();

            lock (TcpConnects)
            {
                TcpConnects[tcpConn.IndexInPool] = tcpConn;
            }
            tcpConn.Session = ass;
            tcpConn.Host    = this;
            ass.ExtObject   = tcpConn;

            ass.SetReceiveHandler(arg =>
            {
                unsafe
                {
                    fixed(byte *ptr = &arg.Buffer[arg.Offset])
                    {
                        tcpConn.OnReceiveData((IntPtr)ptr, arg.BytesTransferred);
                    }
                }
            });

            if (OnTcpConnected != null)
            {
                OnTcpConnected(tcpConn);
            }
        }
Ejemplo n.º 2
0
        private void CloseClientConnect(SuperSocket.ISocketSession session)
        {
            var ass  = session as SuperSocket.AsyncSocketSession;
            var conn = ass.ExtObject as TcpConnect;

            lock (TcpConnects)
            {
                TcpConnects.Remove(conn.IndexInPool);
            }
            if (OnTcpDisConnected != null)
            {
                OnTcpDisConnected(conn);
            }
            conn.Session = null;
            conn.Host    = null;
            mPool.FreeConnect(conn);
        }