void receivepage(object ias)
 {
     while (true)
     {
         try
         {
             NETcollection[] netlist = new NETcollection[listconn.Count];
             listconn.CopyTo(netlist);
             foreach (NETcollection netc in netlist)
             {
                 if (netc.Datalist.Count > 0)
                 {
                     if (!netc.Ispage)
                     {
                         netc.Ispage = true;
                         System.Threading.Thread t = new System.Threading.Thread(new ParameterizedThreadStart(packageData));
                         t.Start(netc);
                     }
                 }
             }
             System.Threading.Thread.Sleep(10);
         }
         catch { }
     }
 }
        private void ReadCallback(IAsyncResult ar)
        {
            NETcollection netc    = (NETcollection)ar.AsyncState;
            Socket        handler = netc.Soc;

            try
            {
                int bytesRead = 0;
                try
                {
                    bytesRead = handler.EndReceive(ar);
                }
                catch
                {
                    netc.Soc.Close();
                    listconn.Remove(netc);
                }
                byte[] tempbtye = new byte[bytesRead];

                //netc.Buffer.CopyTo(tempbtye, 0);
                if (bytesRead > 0)
                {
                    Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead);
                    netc.Datalist.Add(tempbtye);
                }
            }
            catch
            {
            }
        }
        private void packageData(object obj)
        {
            NETcollection netc     = obj as NETcollection;
            List <byte[]> ListData = netc.Datalist;

            try
            {
                int i     = 0;
                int count = ListData.Count;

                if (count > 0)
                {
                    int bytesRead = ListData[i] != null ? ListData[i].Length : 0;
                    if (bytesRead == 0)
                    {
                        if (ListData.Count > 0)
                        {
                            ListData.RemoveAt(0);
                        }
                        netc.Ispage = false; return;
                    }
                    ;
                    byte[] tempbtye = new byte[bytesRead];
                    Array.Copy(ListData[i], tempbtye, tempbtye.Length);


                    try
                    {
                        dtumodle dd = new dtumodle();
                        dd.Data = tempbtye;
                        dd.Soc  = netc.Soc;
                        if (receiveeventDtu != null)
                        {
                            System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(objreceiveeventDtu), dd);
                        }
                        // receiveeventDtu.BeginInvoke(tempbtye, netc.Soc, null, null);
                        if (ListData.Count > 0)
                        {
                            ListData.RemoveAt(i);
                        }
                        netc.Ispage = false; return;
                    }
                    catch (Exception e)
                    {
                        netc.Ispage = false; return;
                    }
                }
            }
            catch (Exception e)
            {
                if (netc.Datalist.Count > 0)
                {
                    netc.Datalist.RemoveAt(0);
                }
                netc.Ispage = false;
                return;
            }
            finally { netc.Ispage = false; }
        }
        void Accept(object ias)
        {
            while (true)
            {
                Socket handler = listener.Accept();

                NETcollection netc = new NETcollection();
                netc.Soc = handler;
                listconn.Add(netc);
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(UpdataConnSoc), handler);
            }
        }
        void receive(object ias)
        {
            while (true)
            {
                try
                {
                    int c = listconn.Count;

                    NETcollection[] netlist = new NETcollection[c];
                    listconn.CopyTo(0, netlist, 0, c);
                    getbuffer(netlist, 0, c);
                }
                catch { }
                System.Threading.Thread.Sleep(10);
            }
        }
 void getbuffer(NETcollection[] netlist, int index, int len)
 {
     for (int i = index; i < len; i++)
     {
         NETcollection netc = netlist[i];
         try
         {
             if (netc.Soc != null)
             {
                 if (netc.Soc.Available > 0)
                 {
                     netc.Soc.BeginReceive(netc.Buffer = new byte[netc.Soc.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback), netc);
                 }
             }
         }
         catch
         { }
     }
 }
        public void xintiao(object obj)
        {
            while (true)
            {
                try
                {
                    System.Threading.Thread.Sleep(8000);
                    //  ArrayList al = new ArrayList();
                    // al.Clone()
                    NETcollection[] netlist = new NETcollection[listconn.Count];
                    listconn.CopyTo(netlist);
                    foreach (NETcollection netc in netlist)
                    {
                        try
                        {
                            byte[] b = new byte[1];

                            netc.Soc.Send(b);
                        }
                        catch
                        {
                            try
                            {
                                netc.Soc.Close();
                            }
                            catch { }
                            System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(DeleteConnSoc), netc.Soc);


                            listconn.Remove(netc);
                        }
                    }

                    GC.Collect();
                }
                catch { }
            }
        }