コード例 #1
0
        async public static void TimerCallback(object objt)
        {
            while (true)
            {
                try
                {
                    var tcpListen  = objt as System.Net.Sockets.TcpListener;
                    var listenList = new List <Task <System.Net.Sockets.TcpClient> >();
                    tcpListen.Server.UseOnlyOverlappedIO = true;
                    while (tcpListen.Pending())
                    {
                        listenList.Add(tcpListen.AcceptTcpClientAsync());
                    }
                    //listenTimer.Change(100, 1); // Let's stop the timer from consuming too many threads
                    bool restart = false;
                    for (int i = 0; i < listenList.Count; i++)
                    {
                        var item   = listenList[i];
                        var listen = await item;
                        System.Threading.Interlocked.Increment(ref clientsConnected);
                        if (item.IsCompleted)
                        {
                            TcpByteAgentHandler tcbah = new TcpByteAgentHandler(new TcpByteTransport(listen), TcpByteAgentHandler.HandlerType.ReceiveHeavy);
                            tcbah.AddCommand(new ChainsAPM.Commands.Common.SendString(""));
                            tcbah.HasData      += tcbah_HasDataEvent;
                            tcbah.Disconnected += tcbah_Disconnected;
                            concurrentAgentHandlerList.GetOrAdd(tcbah.GetHashCode(), tcbah);
                        }

                        if (i == listenList.Count - 1 && restart == true)
                        {
                            i       = 0;
                            restart = false;
                        }
                    }
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                }
                System.Threading.Thread.Sleep(10);
            }
        }
コード例 #2
0
        static void tcbah_Disconnected(object sender)
        {
            System.Threading.Interlocked.Decrement(ref clientsConnected);
            var tcbah = sender as TcpByteAgentHandler;

            lock (lockConsole)
            {
                tcbah.DisconnectedTime = DateTime.Now;
                Console.WriteLine("Agent {0} disconnected. It was connected for {1}", tcbah.AgentInfo.AgentName, (tcbah.DisconnectedTime - tcbah.ConnectedTime));
            }

            var fstream = System.IO.File.CreateText(string.Format(@"C:\Logfiles\{0}_{1}.txt", tcbah.AgentInfo.AgentName, tcbah.ConnectedTime.ToFileTime()));

            foreach (var item in tcbah.ThreadEntryPoint)
            {
                fstream.WriteLine("Starting Thread {0:X}", item.Key);
                foreach (var tpe_list in item.Value)
                {
                    fstream.WriteLine("{0}{1}", "".PadLeft((int)tpe_list.Item1), tcbah.FunctionList[tpe_list.Item2]);
                }
            }
            fstream.Flush();
            fstream.Close();
            TcpByteAgentHandler refOut = null;

            concurrentAgentHandlerList.TryRemove(tcbah.GetHashCode(), out refOut);
            if (refOut != null)
            {
                lock (lockConsole)
                {
                    Console.WriteLine("<<<<Agent {0} removed from list.", tcbah.AgentInfo.AgentName);
                }
                Task.Factory.StartNew(async() =>
                {
                    await Task.Delay(30000);
                    tcbah.Disconnect();
                });
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            Dictionary <int, ChainsAPM.Interfaces.ICommand <byte> > CommandList = new Dictionary <int, ICommand <byte> >();
            var cmd1 = new ChainsAPM.Commands.Common.SendString("");

            CommandList.Add(cmd1.Code, cmd1);
            CallContext.LogicalSetData("CommandProviders", CommandList);

            for (int i = 0; i < MAX; i++)
            {
                var whand = new System.Threading.ManualResetEventSlim();
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback((object o) =>
                {
                    var rand     = new Random();
                    var hostname = System.Configuration.ConfigurationManager.AppSettings["hostname"];
                    var port     = int.Parse(System.Configuration.ConfigurationManager.AppSettings["port"]);
                    System.Net.Sockets.TcpClient tcpC = new System.Net.Sockets.TcpClient(hostname, port);
                    TcpByteAgentHandler tcbah         = new TcpByteAgentHandler(new TcpByteTransport(tcpC), TcpByteAgentHandler.HandlerType.SendHeavy);
                    tcbah.AddCommand(new ChainsAPM.Commands.Common.SendString(""));
                    itemCounter.GetOrAdd(tcbah.GetHashCode(), System.Threading.Interlocked.Increment(ref counter2));
                    System.Threading.Interlocked.Increment(ref counter3);
                    tcbah.HasData      += tcbah_HasData;
                    tcbah.Disconnected += tcbah_Disconnected;

                    tcpC.NoDelay   = true;
                    int counter    = 0;
                    int msgCounter = 0;
                    int stopCount  = 10000;
                    do
                    {
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(10, 100)));
                        tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString(randString(5, 1000)));
                        msgCounter += 72;
                        System.Threading.Thread.Sleep(rand.Next(5, 25));
                    } while (++counter != stopCount);


                    Console.WriteLine("Messages Sent: {0}", msgCounter);
                    tcbah.SendCommand(new ChainsAPM.Commands.Common.SendString("Done!"));
                    Console.WriteLine("Done Sent!");
                    lock (msgLock)
                    {
                        totalMessagesSent += msgCounter + 1;
                    }
                }));
            }
            waitHandl.Wait();
            Console.WriteLine("Messages Sent: {0}", totalMessagesSent);
        }