Exemple #1
0
        private void ReadCallback3(object ar)
        {
            WeaveNetWorkItems netc    = (WeaveNetWorkItems)ar;
            Socket            handler = netc.SocketSession;

            //if (!netc.Soc.Poll(100, SelectMode.SelectRead))
            //{
            //    listconn.Remove(netc);
            //    return;
            //}
            // Read data from the client socket.
            try
            {
                handler.Receive(netc.Buffer = new byte[netc.SocketSession.Available]);
                //if (bytesRead > 0)
                //{
                //    // There  might be more data, so store the data received so far.
                byte[] tempbtye = new byte[netc.Buffer.Length];
                //netc.Buffer.CopyTo(tempbtye, 0);
                Array.Copy(netc.Buffer, 0, tempbtye, 0, tempbtye.Length);
                netc.DataList.Add(tempbtye);
                //  System.Threading.Thread.Sleep(10);
            }
            catch
            {
            }
            //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc);
        }
Exemple #2
0
        private void ReadCallback(IAsyncResult ar)
        {
            int        bytesRead = 0;
            IPEndPoint server    = new IPEndPoint(IPAddress.Any, Port);
            EndPoint   ep        = server;

            bytesRead = socketLisener.EndReceiveFrom(ar, ref ep);
            WeaveNetWorkItems workItem = (WeaveNetWorkItems)ar.AsyncState;

            workItem.Ep = ep;
            try
            {
                byte[] tempbtye = new byte[bytesRead];
                if (bytesRead > 0)
                {
                    Array.Copy(workItem.Buffer, 0, tempbtye, 0, bytesRead);
                    var query = weaveNetworkItems.Where(p => p.Ep.Equals(ep));
                    foreach (WeaveNetWorkItems wnw in query)
                    {
                        wnw.DataList.Add(tempbtye);
                        return;
                    }

                    WeaveUpdateSocketListEvent?.Invoke(ep);
                    workItem.Lasttime = DateTime.Now;
                    workItem.Ep       = ep;
                    workItem.DataList.Add(tempbtye);
                    weaveNetworkItems.Add(workItem);
                    return;
                }
            }
            catch
            {
            }
        }
Exemple #3
0
 public void KeepAlive(object obj)
 {
     while (true)
     {
         try
         {
             System.Threading.Thread.Sleep(8000);
             //  ArrayList al = new ArrayList();
             // al.Clone()
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[netWorkList.Count];
             netWorkList.CopyTo(netlist);
             foreach (WeaveNetWorkItems netc in netlist)
             {
                 try
                 {
                     byte[] b = new byte[1];
                     netc.SocketSession.Send(b);
                 }
                 catch
                 {
                     try
                     {
                         netc.SocketSession.Close();
                     }
                     catch { }
                     ThreadPool.QueueUserWorkItem(new WaitCallback(DeleteSocketListHander), netc.SocketSession);
                     netWorkList.Remove(netc);
                 }
             }
             GC.Collect();
         }
         catch { }
     }
 }
Exemple #4
0
 void receivepackageData(object ias)
 {
     while (true)
     {
         try
         {
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveWorkItemsList.Count];
             weaveWorkItemsList.CopyTo(netlist);
             foreach (WeaveNetWorkItems 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.ThreadPool.QueueUserWorkItem(new WaitCallback(packageData), netc);
                         //packageDataHandler pdh = new packageDataHandler(packageData);
                         //pdh.BeginInvoke(netc, null, null);
                     }
                     // System.Threading.Thread.Sleep(1);
                 }
                 // System.Threading.Thread.Sleep(5);
             }
             System.Threading.Thread.Sleep(5);
         }
         catch
         { }
     }
 }
Exemple #5
0
 void Accept(object ias)
 {
     while (true)
     {
         try
         {
             Socket handler = socket.Accept();
             //if (listener == null)
             //    return;
             //Socket handler = listener.EndAccept(ar);
             //listener.BeginAccept(new AsyncCallback(Accept), listener);
             // Create the state object.
             WeaveNetWorkItems netc = new WeaveNetWorkItems();
             netc.SocketSession = handler;
             netc.State         = 0;
             // listconn.Add(netc);
             connlist.Add(netc);
             // new receiveconndele(setherd2).BeginInvoke(handler, null, null);
             // System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(setherd2), handler);
             //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback2), netc);
         }
         catch (Exception ex)
         {
             string ems = ex.Message;
         }
     }
 }
 private void ReceivePageHander(object obj)
 {
     // throw new NotImplementedException();
     while (true)
     {
         try
         {
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveNetworkItems.Count];
             weaveNetworkItems.CopyTo(netlist);
             foreach (WeaveNetWorkItems netc in netlist)
             {
                 if (netc.DataList.Count > 0)
                 {
                     if (!netc.IsPage)
                     {
                         netc.IsPage = true;
                         ThreadPool.QueueUserWorkItem(new WaitCallback(packageData), netc);
                         //System.Threading.Thread t = new System.Threading.Thread(new ParameterizedThreadStart(packageData));
                         //t.Start(netc);
                         //Webp2psever.packageDataHandler pdh = new Webp2psever.packageDataHandler(packageData);
                         //pdh.BeginInvoke(netc, endpackageData, null);
                     }
                 }
             }
             System.Threading.Thread.Sleep(10);
         }
         catch { }
     }
 }
Exemple #7
0
 void ReceivePageHander(object ias)
 {
     while (true)
     {
         try
         {
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[netWorkList.Count];
             netWorkList.CopyTo(netlist);
             foreach (WeaveNetWorkItems netc in netlist)
             {
                 if (netc.DataList.Count > 0)
                 {
                     if (!netc.IsPage)
                     {
                         netc.IsPage = true;
                         ThreadPool.QueueUserWorkItem(new WaitCallback(PackageData), netc);
                         //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)
        {
            WeaveNetWorkItems netc    = (WeaveNetWorkItems)ar.AsyncState;
            Socket            handler = netc.SocketSession;

            try
            {
                int bytesRead = 0;
                try
                {
                    bytesRead = handler.EndReceive(ar);
                }
                catch
                {
                    netc.SocketSession.Close();
                    netWorkList.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
            {
            }
        }
Exemple #9
0
        private void PackageData(object obj)
        {
            WeaveNetWorkItems netc     = obj as WeaveNetWorkItems;
            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
                    {
                        DtuModel dd = new DtuModel();
                        dd.Data = tempbtye;
                        dd.Soc  = netc.SocketSession;
                        if (weaveReceiveDtuEvent != null)
                        {
                            ThreadPool.QueueUserWorkItem(new WaitCallback(DtuReceiveEventCallBack), 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; }
        }
Exemple #10
0
 void AcceptHander(object ias)
 {
     while (true)
     {
         Socket            handler = socket.Accept();
         WeaveNetWorkItems netc    = new WeaveNetWorkItems();
         netc.SocketSession = handler;
         netWorkList.Add(netc);
         System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(UpdateSocketListHander), handler);
     }
 }
        //private static readonly ConditionalWeakTable<Socket, StrongBox<EndPoint>> _extensionField_f=new ConditionalWeakTable<Socket, StrongBox<EndPoint>>();
        //  EndPoint get_f(Socket obj)
        //{
        //    StrongBox<EndPoint> box;
        //    if (!_extensionField_f.TryGetValue(obj, out box))
        //        return default(EndPoint);
        //    return box.Value;
        //}
        //  void set_f(Socket obj, EndPoint value)
        //{
        //    StrongBox<EndPoint> box = _extensionField_f.GetOrCreateValue(obj);
        //    box.Value = value;
        //}
        // void Remove(Socket obj)
        //{
        //    _extensionField_f.Remove(obj);

        //}
        private void ReadCallback(IAsyncResult ar)
        {
            int        bytesRead = 0;
            IPEndPoint server    = new IPEndPoint(IPAddress.Any, Port);
            EndPoint   ep        = (EndPoint)server;

            bytesRead = socketLisener.EndReceiveFrom(ar, ref ep);
            WeaveNetWorkItems workItem = (WeaveNetWorkItems)ar.AsyncState;

            // Socket handler = workItem.SocketSession;
            workItem.Ep = ep;
            try
            {
                byte[] tempbtye = new byte[bytesRead];
                if (bytesRead > 0)
                {
                    Array.Copy(workItem.Buffer, 0, tempbtye, 0, bytesRead);
                    var query = weaveNetworkItems.Where(p => p.Ep.Equals(ep));
                    foreach (WeaveNetWorkItems wnw in query)
                    {
                        if (tempbtye.Length == 1 && tempbtye[0] == 0x99)
                        {
                            wnw.Lasttime = DateTime.Now;
                            return;
                        }
                        wnw.DataList.Add(tempbtye);
                        return;
                    }
                    ;

                    // Socket soc = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);


                    //  set_f(soc, ep);
                    //EndPoint ee = get_f(soc);
                    //System.Windows.Forms.MessageBox.Show(ee.ToString());
                    if (weaveUpdateSocketListEvent != null)
                    {
                        weaveUpdateSocketListEvent(ep);
                    }
                    workItem.Lasttime = DateTime.Now;
                    workItem.Ep       = ep;
                    workItem.DataList.Add(tempbtye);
                    weaveNetworkItems.Add(workItem);
                    return;
                }
            }
            catch
            {
            }
        }
Exemple #12
0
 void ReceiveHander(object ias)
 {
     while (true)
     {
         try
         {
             int c = netWorkList.Count;
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c];
             netWorkList.CopyTo(0, netlist, 0, c);
             getbuffer(netlist, 0, c);
         }
         catch { }
         System.Threading.Thread.Sleep(10);
     }
 }
Exemple #13
0
 void setherd(object obj)
 {
     try
     {
         WeaveNetWorkItems netc = obj as WeaveNetWorkItems;
         sendhead(netc.SocketSession, netc.Buffer);
         //  System.Threading.Thread.Sleep(50);
         // new sendheaddele(sendhead).BeginInvoke(netc.Soc, netc.Buffer, null, null);
         netc.State = 1;
         if (weaveUpdateSocketListEvent != null)
         {
             weaveUpdateSocketListEvent(netc.SocketSession);
         }
         // EventUpdataConnSoc.BeginInvoke(netc.Soc, null, null);
     }
     catch { }
 }
Exemple #14
0
 void receive(object ias)
 {
     while (true)
     {
         try
         {
             //int c = listconn.Count;
             //int count = (c / Partition) + 1;
             //getbufferdelegate[] iagbd = new getbufferdelegate[count];
             //IAsyncResult[] ia = new IAsyncResult[count];
             //if (c > 0)
             //{
             //    for (int i = 0; i < count; i++)
             //    {
             //        c = c - (i * Partition) > Partition ? Partition : c - (i * Partition);
             //        NETcollection[] netlist = new NETcollection[c];
             //        listconn.CopyTo(i * Partition, netlist, 0, c);
             //        iagbd[i] = new getbufferdelegate(getbuffer);
             //        ia[i] = iagbd[i].BeginInvoke(netlist, 0, Partition,1,30, null, null);
             //    }
             //    for (int i = 0; i < count; i++)
             //    {
             //        iagbd[i].EndInvoke(ia[i]);
             //    }
             //}
             int c = weaveWorkItemsList.Count;
             //int count = (c / 2000) + 1;
             //if (c > 0)
             //    for (int i = 0; i < count; i++)
             //    {
             //        c = c - (i * 2000) > 2000 ? 2000 : c - (i * 2000);
             //        NETcollection[] netlist2 = new NETcollection[c];
             //        listconn.CopyTo(i * 2000, netlist2, 0, c);
             //        System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(gg), netlist2);
             //        //new getbufferdelegate(getbuffer).BeginInvoke(netlist, 0, 2000,null,null);
             //    }
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c];
             weaveWorkItemsList.CopyTo(0, netlist, 0, c);
             getbuffer(netlist, 0, c, 1, 30);
             System.Threading.Thread.Sleep(1);
         }
         catch
         { }
     }
 }
Exemple #15
0
 void getbuffer(WeaveNetWorkItems[] netlist, int index, int len)
 {
     for (int i = index; i < len; i++)
     {
         WeaveNetWorkItems netc = netlist[i];
         try
         {
             if (netc.SocketSession != null)
             {
                 if (netc.SocketSession.Available > 0)
                 {
                     netc.SocketSession.BeginReceive(netc.Buffer = new byte[netc.SocketSession.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback), netc);
                 }
             }
         }
         catch
         { }
     }
 }
Exemple #16
0
        public void KeepAliveHander(object obj)
        {
            while (true)
            {
                try
                {
                    WeaveNetWorkItems[] weaveWorkItems = new WeaveNetWorkItems[weaveWorkItemsList.Count];
                    weaveWorkItemsList.CopyTo(weaveWorkItems);
                    foreach (WeaveNetWorkItems workItem in weaveWorkItems)
                    {
                        try
                        {
                            if (workItem == null)
                            {
                                continue;
                            }
                            if (workItem.State != 0)
                            {
                                DataFrame df = new DataFrame();
                                df.setByte(new byte[] { 0x99 });
                                workItem.SocketSession.Send(df.GetBytes());
                                workItem.ErrorNum = 0;
                            }
                        }
                        catch
                        {
                            workItem.ErrorNum += 1;
                            if (workItem.ErrorNum > 3)
                            {
                                ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(DeleteSocketListHander), workItem.SocketSession);


                                // EventDeleteConnSoc.BeginInvoke(netc.Soc, null, null);
                                weaveWorkItemsList.Remove(workItem);
                            }
                        }
                    }
                    System.Threading.Thread.Sleep(8000);
                }
                catch { }
            }
        }
 private void ReceiveHander(object obj)
 {
     while (true)
     {
         try
         {
             if (socketLisener.Available > 0)
             {
                 WeaveNetWorkItems netc = new WeaveNetWorkItems();
                 byte[]            b    = new byte[socketLisener.Available];
                 netc.Buffer = b;
                 IPEndPoint server = new IPEndPoint(IPAddress.Any, Port);
                 EndPoint   ep     = (EndPoint)server;
                 socketLisener.BeginReceiveFrom(b, 0, b.Length, SocketFlags.None, ref ep, new AsyncCallback(ReadCallback), netc);
             }
         }
         catch { }
         System.Threading.Thread.Sleep(1);
     }
 }
        public void KeepAliveHander(object obj)
        {
            // throw new NotImplementedException();
            // Remove()
            while (true)
            {
                try
                {
                    WeaveNetWorkItems[] workItems = new WeaveNetWorkItems[weaveNetworkItems.Count];
                    weaveNetworkItems.CopyTo(workItems);
                    foreach (WeaveNetWorkItems workItem in workItems)
                    {
                        if (workItem == null)
                        {
                            continue;
                        }
                        Thread.Sleep(1);
                        try
                        {
                            EndPoint ep = workItem.Ep;
                            byte[]   b  = new byte[] { 0x99 };
                            socketLisener.SendTo(b, ep);
                            if ((DateTime.Now - workItem.Lasttime).TotalSeconds > 90)
                            {
                                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(DeleteSocketListEventHander), workItem.Ep);

                                //  Remove(workItem.SocketSession);
                                weaveNetworkItems.Remove(workItem);
                            }
                        }
                        catch
                        {
                            workItem.ErrorNum += 1;
                        }
                    }
                    Thread.Sleep(5000);
                    // GC.Collect();
                }
                catch { }
            }
        }
Exemple #19
0
        private void ReadCallback2(IAsyncResult ar)
        {
            WeaveNetWorkItems netc    = (WeaveNetWorkItems)ar.AsyncState;
            Socket            handler = netc.SocketSession;
            int bytesRead             = 0;

            try
            {
                try
                {
                    bytesRead = handler.EndReceive(ar);
                }
                catch
                {
                    netc.SocketSession.Close();
                    weaveWorkItemsList.Remove(netc);
                }
                byte[] tempbtye = new byte[bytesRead];
                Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead);
                //   System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback())
                netc.State = 1;
                SendHeadDelegate sh = new SendHeadDelegate(sendhead);
                IAsyncResult     ia = sh.BeginInvoke(handler, tempbtye, null, null);
                sh.EndInvoke(ia);
                //if (EventUpdataConnSoc != null)
                //    EventUpdataConnSoc.BeginInvoke(handler, null, null);
                System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(UpdateSocketListHander), handler);
                return;
                //System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(UpdataConnSoc));
                //t.Start(handler);
                // handler.BeginSend(aaa, 0, aaa.Length, 0, HandshakeFinished, handler);
            }
            catch (Exception ex)
            {
                string ems = ex.Message;
            }
            //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc);
        }
Exemple #20
0
 void getbuffer(WeaveNetWorkItems[] netlist, int index, int len, int state, int num)
 {
     for (int i = index; i < len; i++)
     {
         if (i >= netlist.Length)
         {
             return;
         }
         try
         {
             WeaveNetWorkItems netc = netlist[i];
             if (netc.SocketSession != null)
             {
                 if (netc.SocketSession.Available > 0)
                 {
                     if (netc.State == state)
                     {
                         if (netc.SocketSession.Available > num)
                         {
                             if (state == 0)
                             {
                                 netc.SocketSession.BeginReceive(netc.Buffer = new byte[netc.SocketSession.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback2), netc);
                             }
                             if (state == 1)
                             {
                                 System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReadCallback3), netc);
                             }
                             // netc.Soc.BeginReceive(netc.Buffer = new byte[netc.Soc.Available], 0, netc.Buffer.Length, 0, new AsyncCallback(ReadCallback), netc);
                             // listconn.Find(p=>p==netc).State = 1;
                         }
                     }
                 }
             }
         }
         catch
         { }
     }
 }
Exemple #21
0
        public void KeepAliveHander(object obj)
        {
            while (true)
            {
                try
                {
                    WeaveNetWorkItems[] workItems = new WeaveNetWorkItems[weaveNetworkItems.Count];
                    weaveNetworkItems.CopyTo(workItems);
                    foreach (WeaveNetWorkItems workItem in workItems)
                    {
                        if (workItem == null)
                        {
                            continue;
                        }
                        Thread.Sleep(1);
                        try
                        {
                            EndPoint ep = workItem.Ep;
                            byte[]   b  = new byte[] { 0x99 };
                            Send(ep, 0x99, new byte[1]);
                            //socketLisener.SendTo(b, ep);
                            if ((DateTime.Now - workItem.Lasttime).TotalSeconds > 90)
                            {
                                ThreadPool.QueueUserWorkItem(new WaitCallback(DeleteSocketListEventHander), workItem.Ep);

                                weaveNetworkItems.Remove(workItem);
                            }
                        }
                        catch
                        {
                            workItem.ErrorNum += 1;
                        }
                    }
                    Thread.Sleep(5000);
                }
                catch { }
            }
        }
Exemple #22
0
        private void ReadCallback(IAsyncResult ar)
        {
            WeaveNetWorkItems netc    = (WeaveNetWorkItems)ar.AsyncState;
            Socket            handler = netc.SocketSession;

            //if (!netc.Soc.Poll(100, SelectMode.SelectRead))
            //{
            //    listconn.Remove(netc);
            //    return;
            //}
            // Read data from the client socket.
            try
            {
                int bytesRead = 0;
                try
                {
                    bytesRead = handler.EndReceive(ar);
                }
                catch
                {
                    netc.SocketSession.Close();
                    weaveWorkItemsList.Remove(netc);
                }
                //if (bytesRead > 0)
                //{
                //    // There  might be more data, so store the data received so far.
                byte[] tempbtye = new byte[bytesRead];
                //netc.Buffer.CopyTo(tempbtye, 0);
                Array.Copy(netc.Buffer, 0, tempbtye, 0, bytesRead);
                netc.DataList.Add(tempbtye);
                //  System.Threading.Thread.Sleep(10);
            }
            catch
            {
            }
            //handler.BeginReceive(netc.Buffer, 0, netc.BufferSize, 0, new AsyncCallback(ReadCallback), netc);
        }
Exemple #23
0
 private void ReceivePageHander(object obj)
 {
     while (true)
     {
         try
         {
             WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[weaveNetworkItems.Count];
             weaveNetworkItems.CopyTo(netlist);
             foreach (WeaveNetWorkItems netc in netlist)
             {
                 if (netc.DataList.Count > 0)
                 {
                     if (!netc.IsPage)
                     {
                         netc.IsPage = true;
                         ThreadPool.QueueUserWorkItem(new WaitCallback(PackageData), netc);
                     }
                 }
             }
             Thread.Sleep(10);
         }
         catch { }
     }
 }
Exemple #24
0
 void receiveconn(object ias)
 {
     //  NETcollection netcs = ias as NETcollection;
     while (true)
     {
         int c = connlist.Count;
         WeaveNetWorkItems[] netlist = new WeaveNetWorkItems[c];
         connlist.CopyTo(0, netlist, 0, c);
         foreach (WeaveNetWorkItems netc in netlist)
         {
             try
             {
                 if (netc != null)
                 {
                     if (netc.SocketSession != null)
                     {
                         if (netc.State == 0)
                         {
                             if (netc.SocketSession.Available > 200)
                             {
                                 netc.SocketSession.Receive(netc.Buffer = new byte[netc.SocketSession.Available]);
                                 // setherd(netc);
                                 //new receiveconndele(setherd).BeginInvoke(netc, null, null);
                                 System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(setherd), netc);
                                 connlist.Remove(netc);
                                 weaveWorkItemsList.Add(netc);
                             }
                         }
                     }
                 }
             }
             catch { }
         }
         System.Threading.Thread.Sleep(1);
     }
 }
        protected override bool Setherd(WeaveNetWorkItems netc, int xintiao = 0)
        {
            //WeaveNetWorkItems netc = obj as WeaveNetWorkItems;
            try
            {
                if (xintiao == 1)
                {
                    if (netc.State == 1)
                    {
                        return(true);
                    }
                    return(false);
                }
                if (netc.State == 1)
                {
                    return(true);
                }
                if (Certificate != null)
                {
                    string httpstr  = ReadMessage(netc.Stream);
                    byte[] tempbtye = Encoding.Default.GetBytes(httpstr);
                    tempbtye = ManageHandshake(tempbtye, tempbtye.Length);
                    netc.Stream.Write(tempbtye);
                    netc.Stream.Flush();
                    netc.State = 1;
                    return(false);
                }
                else
                {
                    //lb11220:
                    //    while (netc.SocketSession.Available < 200)
                    //    {
                    //        System.Threading.Thread.Sleep(10);
                    //        goto lb11220;
                    //    }
                    if (netc.SocketSession.Available < 200)
                    {
                        return(false);
                    }

                    netc.Buffer = new byte[netc.SocketSession.Available];
                    //if (netc.SocketSession.Available == 0)
                    //    return false;
                    netc.SocketSession.Receive(netc.Buffer);
                    if (Sendhead(netc.SocketSession, netc.Buffer))
                    {
                        netc.Buffer = new byte[0];
                        netc.State  = 1;
                        System.Threading.ThreadPool.QueueUserWorkItem(
                            new System.Threading.WaitCallback(UpdateSocketListEventHander),
                            netc.SocketSession);
                        // UpdateSocketListEventHander(netc.SocketSession);
                        // base.weaveUpdateSocketListEvent()
                        // base.weaveUpdateSocketListEvent?.Invoke(netc.SocketSession);
                        return(false);
                    }
                    else
                    {
                        try { netc.SocketSession.Close(); } catch { }
                    }
                }

                return(false);

                //weaveWorkItemsList.Add(netc);
                //weaveUpdateSocketListEvent?.Invoke(netc.SocketSession);
            }
            catch
            {
                //   try { netc.SocketSession.Close(); } catch { }
                return(false);
            }
            finally
            { netc.IsPage = false; }
        }
        private void packageData(object obj)
        {
            WeaveNetWorkItems netc     = obj as WeaveNetWorkItems;
            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);
                    if (bytesRead > 2)
                    {
                        netc.Lasttime = DateTime.Now;
                        int a = tempbtye[1];
                        if (bytesRead > 2 + a)
                        {
                            int len = 0;
                            if (weaveDataType == WeaveDataTypeEnum.Bytes)
                            {
                                byte[] bb = new byte[a];
                                Array.Copy(tempbtye, 2, bb, 0, a);
                                len = ConvertToInt(bb);
                            }
                            else
                            {
                                String temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2, a);
                                len = int.Parse(temp);
                            }
                            if ((len + 2 + a) > tempbtye.Length)
                            {
                                try
                                {
                                    if (ListData.Count > 1)
                                    {
                                        ListData.RemoveAt(i);
                                        byte[] temps = new byte[tempbtye.Length];
                                        Array.Copy(tempbtye, temps, temps.Length);
                                        byte[] tempbtyes = new byte[temps.Length + ListData[i].Length];
                                        Array.Copy(temps, tempbtyes, temps.Length);
                                        Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length);
                                        ListData[i] = tempbtyes;
                                    }
                                }
                                catch
                                {
                                }
                                netc.IsPage = false; return;
                            }
                            else if (tempbtye.Length > (len + 2 + a))
                            {
                                try
                                {
                                    byte[] temps = new byte[tempbtye.Length - (len + 2 + a)];
                                    Array.Copy(tempbtye, (len + 2 + a), temps, 0, temps.Length);
                                    ListData[i] = temps;
                                }
                                catch
                                { }
                                // netc.Ispage = false; return;
                            }
                            else if (tempbtye.Length == (len + 2 + a))
                            {
                                if (ListData.Count > 0)
                                {
                                    ListData.RemoveAt(i);
                                }
                            }
                            try
                            {
                                if (weaveDataType == WeaveDataTypeEnum.Json)
                                {
                                    String     temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len);
                                    WeaveEvent me   = new WeaveEvent();
                                    me.Command = tempbtye[0];
                                    me.Data    = temp;
                                    me.Ep      = netc.Ep;
                                    if (waveReceiveEvent != null)
                                    {
                                        System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveEventHander), me);
                                    }
                                    //receiveeventto(me);
                                    //if (receiveevent != null)
                                    //    receiveevent.BeginInvoke(tempbtye[0], temp, netc.Soc, null, null);
                                    //if (ListData.Count > 0) ListData.RemoveAt(i);
                                }
                                else if (weaveDataType == WeaveDataTypeEnum.Bytes)
                                {
                                    //  temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len);
                                    byte[] bs = new byte[len];
                                    Array.Copy(tempbtye, (2 + a), bs, 0, bs.Length);
                                    WeaveEvent me = new WeaveEvent();
                                    me.Command = tempbtye[0];
                                    me.Data    = "";
                                    me.Databit = bs;
                                    me.Ep      = netc.Ep;
                                    if (weaveReceiveBitEvent != null)
                                    {
                                        System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveBitEventHander), me);
                                    }
                                }
                                netc.IsPage = false; return;
                            }
                            catch
                            {
                                netc.IsPage = false; return;
                            }
                        }
                        else
                        {
                            if (ListData.Count > 0)
                            {
                                ListData.RemoveAt(i);
                                byte[] temps = new byte[tempbtye.Length];
                                Array.Copy(tempbtye, temps, temps.Length);
                                byte[] tempbtyes = new byte[temps.Length + ListData[i].Length];
                                Array.Copy(temps, tempbtyes, temps.Length);
                                Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length);
                                ListData[i] = tempbtyes;
                            }
                            netc.IsPage = false; return;
                        }
                    }
                    else
                    {
                        try
                        {
                            if (ListData.Count > 1)
                            {
                                ListData.RemoveAt(i);
                                byte[] temps = new byte[tempbtye.Length];
                                Array.Copy(tempbtye, temps, temps.Length);
                                byte[] tempbtyes = new byte[temps.Length + ListData[i].Length];
                                Array.Copy(temps, tempbtyes, temps.Length);
                                Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length);
                                ListData[i] = tempbtyes;
                            }
                        }
                        catch
                        {
                        }
                        netc.IsPage = false; return;
                    }
                }
            }
            catch
            {
                if (netc.DataList.Count > 0)
                {
                    netc.DataList.RemoveAt(0);
                }
                netc.IsPage = false;
                return;
            }
            finally { netc.IsPage = false; }
        }
Exemple #27
0
        private void packageData(object obj)
        {
            WeaveNetWorkItems netc = obj as WeaveNetWorkItems;

            try
            {
                //  Array.Copy(netc.Datalist, ListData, count);
                //while (true)
                //{
                int           count    = netc.DataList.Count;
                List <Byte[]> ListData = netc.DataList;
                int           i        = 0;
                if (netc.DataList.Count > 0)
                {
                    DataFrameHeader dfh       = null;
                    int             bytesRead = ListData[i] != null ? ListData[i].Length : 0;
                    if (bytesRead == 0)
                    {
                        if (ListData.Count > 0)
                        {
                            ListData.RemoveAt(0);
                        }
                        netc.IsPage = false; return;
                    }
                    ;
                    byte[] tempbtyes = new byte[bytesRead];
                    Array.Copy(ListData[i], tempbtyes, tempbtyes.Length);
                    byte[] masks    = new byte[4];
                    int    lens     = 0;
                    int    paylen   = 0;
                    byte[] tempbtye = null;
                    try
                    {
                        DataFrame df = new DataFrame();
                        // AnalyticData(tempbtyes, bytesRead, ref masks, ref lens, ref paylen);
                        tempbtye = df.GetData(tempbtyes, ref masks, ref lens, ref paylen, ref dfh);
                        if (dfh.OpCode != 2)
                        {
                            ListData.RemoveAt(i);
                            netc.IsPage = false; return;
                        }
                    }
                    catch
                    {
                        if (paylen > bytesRead)
                        {
                            ListData.RemoveAt(i);
                            byte[] temps = new byte[tempbtyes.Length];
                            Array.Copy(tempbtyes, temps, temps.Length);
                            tempbtyes = new byte[temps.Length + ListData[i].Length];
                            Array.Copy(temps, tempbtyes, temps.Length);
                            Array.Copy(ListData[i], 0, tempbtyes, temps.Length, ListData[i].Length);
                            ListData[i] = tempbtyes;
                        }
                        else
                        {
                            ListData.RemoveAt(i);
                        }
                        netc.IsPage = false; return;
                    }
                    if (tempbtye == null)
                    {
                        netc.IsPage = false; return;
                    }

                    if (tempbtye.Length > 0)
                    {
                        #region MyRegion
                        String temp = "";
                        int    a    = tempbtye[1];
                        if (bytesRead > 2 + a)
                        {
                            int len = 0;
                            if (DT == WeaveDataTypeEnum.Bytes)
                            {
                                byte[] bb = new byte[a];
                                Array.Copy(tempbtye, 2, bb, 0, a);
                                len = ConvertToInt(bb);
                            }
                            else
                            {
                                temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2, a);
                                try
                                {
                                    len = int.Parse(temp);
                                }
                                catch
                                {
                                    if (bytesRead > tempbtye.Length + lens)
                                    {
                                        int    aa     = bytesRead - (tempbtye.Length + lens);
                                        byte[] temptt = new byte[aa];
                                        Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length);
                                        ListData[i] = temptt;
                                        netc.IsPage = false; return;
                                    }
                                }
                            }
                            if (tempbtye.Length == (len + 2 + a))
                            {
                                if (bytesRead > tempbtye.Length + lens)
                                {
                                    int    aa     = bytesRead - (tempbtye.Length + lens);
                                    byte[] temptt = new byte[aa];
                                    Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length);
                                    ListData[i] = temptt;
                                }
                                else if (bytesRead < tempbtye.Length + lens)
                                {
                                }
                                else
                                {
                                    ListData.RemoveAt(i);
                                }
                                if (DT == WeaveDataTypeEnum.Json)
                                {
                                    temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len);
                                }
                            }
                            else
                            {
                                len = tempbtye.Length - 2 - a;
                                if (DT == WeaveDataTypeEnum.Json)
                                {
                                    temp = System.Text.Encoding.UTF8.GetString(tempbtye, 2 + a, len);
                                }
                                if (bytesRead > tempbtye.Length + lens)
                                {
                                    int    aa     = bytesRead - (tempbtye.Length + lens);
                                    byte[] temptt = new byte[aa];
                                    Array.Copy(tempbtyes, (tempbtye.Length + lens), temptt, 0, temptt.Length);
                                    ListData[i] = temptt;
                                    temp        = combine(temp, temptt, ListData);
                                }
                                else
                                {
                                    ListData.RemoveAt(i);
                                    while (!(ListData.Count > 0))
                                    {
                                        System.Threading.Thread.Sleep(100);
                                    }
                                    temp = combine(temp, ListData[i], ListData);
                                }
                                // netc.Ispage = false; return;
                            }
                            try
                            {
                                if (DT == WeaveDataTypeEnum.Json)
                                {
                                    WeaveEvent me = new WeaveEvent();
                                    me.Command = tempbtye[0];
                                    me.Data    = temp;
                                    me.Soc     = netc.SocketSession;
                                    me.Masks   = masks;
                                    //System.Threading.Thread t = new Thread(new ParameterizedThreadStart(receiveeventto));
                                    //t.Start(me);
                                    //receiveeventto(me);
                                    if (waveReceiveEvent != null)
                                    {
                                        System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveToEventHander), me);
                                    }
                                    //if (receiveevent != null)
                                    //    receiveevent(me.Command, me.Data, me.Soc);
                                }
                                else if (DT == WeaveDataTypeEnum.Bytes)
                                {
                                    byte[] bs = new byte[len - (2 + a)];
                                    Array.Copy(tempbtye, 2 + a, bs, 0, bs.Length);
                                    WeaveEvent me = new WeaveEvent();
                                    me.Command = tempbtye[0];
                                    me.Data    = "";
                                    me.Databit = bs;
                                    me.Soc     = netc.SocketSession;
                                    if (weaveReceiveBitEvent != null)
                                    {
                                        System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ReceiveToBitEventHander), me);
                                    }
                                }
                                netc.IsPage = false; return;
                            }
                            catch (Exception ex)
                            {
                                string ems = ex.Message;
                                netc.IsPage = false; return;
                            }
                        }
                        #endregion
                    }
                }
                // }
            }
            catch (Exception ex)
            {
                string ems = ex.Message;
                if (netc.DataList.Count > 0)
                {
                    netc.DataList.RemoveAt(0);
                }
                netc.IsPage = false;
                return;
            }
        }