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 { } } }