<分区>
我正在尝试同时打开大约 25 个到主机的连接。
我的操作系统是 windows 10。
为了进行测试,我在本地 IIS
上打开了一个简单的网站,并使用 Thread.Sleep(2000)
向用户延迟 2 秒响应一个简单的数据。
现在在客户端使用这段代码:
const int len = 25;
for (int i = 0; i < len; i++)
{
new Thread(new ParameterizedThreadStart((idx) =>
{
// start downloading data.
var res = new WebClient().DownloadString("http://192.168.1.101:8090/");
// log index and time when done.
Console.WriteLine($"{Convert.ToInt32(idx).ToString("00")} done at:{ DateTime.Now.ToString("HH:mm:ss:ffff") }");
})).Start(i);
}
我得到了以下结果:
Thread 01 done at 40:8476 ms
Thread 00 done at 40:8476 ms
Thread 03 done at 40:8496 ms
Thread 04 done at 40:8496 ms
Thread 02 done at 40:8506 ms
Thread 05 done at 40:8506 ms
Thread 07 done at 40:8516 ms
Thread 06 done at 40:8516 ms
Thread 08 done at 40:8536 ms
Thread 09 done at 40:8545 ms
Thread 11 done at 42:8510 ms
Thread 10 done at 42:8510 ms
Thread 12 done at 42:8560 ms
Thread 14 done at 42:8560 ms
Thread 15 done at 42:8570 ms
Thread 13 done at 42:8580 ms
Thread 16 done at 42:8590 ms
Thread 17 done at 42:8590 ms
Thread 18 done at 42:8610 ms
Thread 19 done at 42:8610 ms
Thread 21 done at 44:8565 ms
Thread 20 done at 44:8565 ms
Thread 23 done at 44:8634 ms
Thread 24 done at 44:8654 ms
Thread 22 done at 44:8654 ms
以上结果告诉我们:
1- Thread 0 to 9
同时获取数据。(秒40)
2- 线程 10 到 19
在上一步后 2 秒后同时获取数据。(第 42 秒)
3- Thread 20 to 24
同时拿到了数据。上一步后 2 秒。(秒 44)
现在我的问题是谁限制了我,为什么它只能同时打开 10 个 HTTP
连接,我该如何设置它无限制。
如果有任何其他平台或编程语言,将受到欢迎。