Пример #1
0
        private void AcceptCb(IAsyncResult ar)
        {
            try
            {
                Socket socket = listenfd.EndAccept(ar);
                int    index  = NewIndex();

                if (index < 0)
                {
                    socket.Close();
                    Console.Write(m_serverType + ":[警告]链接池已满");
                }
                else
                {
                    Conn conn = conns[index];
                    conn.Init(socket);
                    string adr = conn.GetAdress();
                    Console.WriteLine(m_serverType + ":客户端连接 [" + adr + "] conn池ID:" + index);
                    conn.socket.BeginReceive(conn.readBuff,
                                             conn.buffCount, conn.BuffRemain(),
                                             SocketFlags.None, ReceiveCb, conn);
                }
                // 继续握手下一个客户端
                listenfd.BeginAccept(AcceptCb, null);
            }
            catch (Exception e)
            {
                Console.WriteLine(m_serverType + ":接受客户端异常:" + e.Message);
            }
        }