public Start ( string trackerAddress ) : void | ||
trackerAddress | string | |
Résultat | void |
public void Start(string trackerAddress)
{
for (var i = 0; i < _threads.Length; i++)
{
_threads[i] = new Thread(() =>
{
var sb = new StringBuilder();
var torrent = 0;
while (true)
{
sb.Remove(0, sb.Length);
sb.Append(trackerAddress);
sb.Append("?info_hash=");
sb.Append(_hashes[torrent++]);
sb.Append("&peer_id=");
sb.Append("12345123451234512345");
sb.Append("&port=");
sb.Append("5000");
sb.Append("&uploaded=");
sb.Append("5000");
sb.Append("&downloaded=");
sb.Append("5000");
sb.Append("&left=");
sb.Append("5000");
sb.Append("&compact=");
sb.Append("1");
var request = WebRequest.Create(sb.ToString());
request.BeginGetResponse(r =>
{
try
{
request.EndGetResponse(r).Close();
_requests.AddDelta(1);
}
catch
{
}
finally
{
_requests.Tick();
}
}, null);
Thread.Sleep(_threadSleepTime);
}
});
_threads[i].Start();
}
}
private static void Benchmark() { Console.Clear(); Console.Write("How many active torrents will be simulated: "); int torrents = GetInt(); Console.Write("How many active peers per torrent: "); int peers = GetInt(); Console.Write("How many requests per second: "); int requests = GetInt(); Console.Write("What is the tracker address: "); string address = Console.ReadLine(); StressTest test = new StressTest(torrents, peers, requests); test.Start(address); while (true) { Console.WriteLine("Measured announces/sec: {0}", test.RequestRate); Console.WriteLine("Total announces: {0}", test.TotalTrackerRequests); Console.WriteLine(Environment.NewLine); System.Threading.Thread.Sleep(1000); } }