Exemple #1
0
        private void acceptCallBack(IAsyncResult result)
        {
            var server = result.AsyncState as Socket;
            int index  = newIndex();

            if (index == -1)
            {
                string errorInfor = string.Format("Server connect error: {0}", "Over the max connect number.");
                log.ErrorLog(errorInfor);
                server.EndAccept(result);
                server.BeginAccept(acceptCallBack, listenSocket);
                return;
            }
            APMConnectState connecter = connecters[index];

            connecter.Init();
            connecter.IsUsed        = true;
            connecter.CurrentSocket = server.EndAccept(result);
            log.NormalLog(string.Format("connect information,ID:{0} , IPAdderss:{1}", connecter.ID, connecter.CurrentSocket.RemoteEndPoint));
            //first Receive data
            connecter.ReceiveAsync(readSize);
            //继续监听新的连接
            server.BeginAccept(acceptCallBack, listenSocket);
        }