|
|
|
@ -24,6 +24,59 @@
|
|
|
|
|
"## 0、准备工作:先执行下面单元,以启动WebApi及设置全局对象、方法及其它"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"vscode": {
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"//全局设置\n",
|
|
|
|
|
"#r \"./Publish/HttpClientStudy.Core/HttpClientStudy.Core.dll\"\n",
|
|
|
|
|
"global using System.Net;\n",
|
|
|
|
|
"global using System.Net.Http;\n",
|
|
|
|
|
"global using System.Diagnostics;\n",
|
|
|
|
|
"global using System.Collections;\n",
|
|
|
|
|
"global using System.Text;\n",
|
|
|
|
|
"global using System.Linq;\n",
|
|
|
|
|
"global using System.IO;\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"global using HttpClientStudy.Core;\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var global_queryDomain=\"soft.pwidc.cn\";\n",
|
|
|
|
|
"var global_queryPort=80;\n",
|
|
|
|
|
"var global_queryBaseUrl = $\"http://{global_queryDomain}:{global_queryPort}\";\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var global_ips =Dns.GetHostAddresses(global_queryDomani);\n",
|
|
|
|
|
"var global_queryIp = ips.First().ToString();\n",
|
|
|
|
|
"var global_netstat_filter = $\"{queryIp}:{global_queryPort}\";"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"统一使用示例"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"vscode": {
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"{ //大括号: 1、作用域隔离 2、方便整体代码折叠\n",
|
|
|
|
|
" Console.WriteLine(global_queryDomain);\n",
|
|
|
|
|
"}"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
@ -33,7 +86,7 @@
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": 18,
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
"language": "pwsh"
|
|
|
|
@ -48,7 +101,7 @@
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"#启动已发布的WebApi项目\n",
|
|
|
|
|
"Start-Process -FilePath \"dotnet.exe\" -ArgumentList \"Publish/HttpClientStudy.WebApi/HttpClientStudy.WebApi.dll\""
|
|
|
|
|
"Start-Process -FilePath dotnet -ArgumentList \".\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.dll\""
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -253,40 +306,31 @@
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"using System.Net;\n",
|
|
|
|
|
"using System.Net.Http;\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"//注意:不能使用百度 hao123等站点,可能是大厂服务器的设置问题,会导致查不到效果\n",
|
|
|
|
|
"var ips = await Dns.GetHostAddressesAsync(\"soft.pwidc.cn\");\n",
|
|
|
|
|
"string firstIp = ips.FirstOrDefault().ToString();\n",
|
|
|
|
|
"\t\n",
|
|
|
|
|
"foreach (var ipAddress in ips)\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" Console.WriteLine(ipAddress.MapToIPv4().ToString());\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"//自定义行为\n",
|
|
|
|
|
"var socketsHandler = new SocketsHttpHandler\n",
|
|
|
|
|
"//测试连接寿命\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" //连接池生命周期为10分钟:连接在池中保持活动时间为10分钟\n",
|
|
|
|
|
" PooledConnectionLifetime = TimeSpan.FromMinutes(10),\n",
|
|
|
|
|
" //自定义行为\n",
|
|
|
|
|
" var socketsHandler = new SocketsHttpHandler\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" //连接池生命周期为10分钟:连接在池中保持活动时间为10分钟\n",
|
|
|
|
|
" PooledConnectionLifetime = TimeSpan.FromMinutes(10),\n",
|
|
|
|
|
"\n",
|
|
|
|
|
" //池化链接的空闲超时时间为5分钟: 5分钟内连接不被重用,则被释放后销毁\n",
|
|
|
|
|
" PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),\n",
|
|
|
|
|
" \n",
|
|
|
|
|
" //每端点的最大连接数设置为10个\n",
|
|
|
|
|
" MaxConnectionsPerServer = 10\n",
|
|
|
|
|
"};\n",
|
|
|
|
|
" //池化链接的空闲超时时间为5分钟: 5分钟内连接不被重用,则被释放后销毁\n",
|
|
|
|
|
" PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),\n",
|
|
|
|
|
" \n",
|
|
|
|
|
" //每端点的最大连接数设置为10个\n",
|
|
|
|
|
" MaxConnectionsPerServer = 10\n",
|
|
|
|
|
" };\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var client = new HttpClient(socketsHandler);\n",
|
|
|
|
|
" var client = new HttpClient(socketsHandler);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"for (var i = 0; i < 5; i++)\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" _ = await client.GetAsync(\"https://soft.pwidc.cn\");\n",
|
|
|
|
|
" await Task.Delay(TimeSpan.FromSeconds(2));\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
" for (var i = 0; i < 5; i++)\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" _ = await client.GetAsync(global_queryBaseUrl);\n",
|
|
|
|
|
" await Task.Delay(TimeSpan.FromSeconds(2));\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Console.WriteLine(\"程序运行大约要10-20秒,请在程序退出后,执行下面命令行查看网络情况\");\n"
|
|
|
|
|
" Console.WriteLine(\"程序运行大约要10-20秒,请在程序退出后,执行下面命令行查看网络情况\");\n",
|
|
|
|
|
"}"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -312,12 +356,13 @@
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 如果没有查询到相关网络状态信息,PowerShell不针对出错,但.Net Interactive 会异常:Command failed: SubmitCode: #!set --value @csharp:xxxx\n",
|
|
|
|
|
"#!set --value @csharp:firstIp --name queryIp\n",
|
|
|
|
|
"# 若查询不到,则异常\n",
|
|
|
|
|
"#!set --value @csharp:global_netstat_filter --name queryFilter\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Write-Host \"请先执行上面的单元,再执行本单元\"\n",
|
|
|
|
|
"Write-Host \"网络状态\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"netstat -ano | findstr $queryIp"
|
|
|
|
|
"netstat -ano | findstr $queryFilter"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -344,59 +389,56 @@
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"using System.IO;\n",
|
|
|
|
|
"using System.Diagnostics;\n",
|
|
|
|
|
"using System.Net;\n",
|
|
|
|
|
"using System.Net.Http;\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var ips = await Dns.GetHostAddressesAsync(\"soft.pwidc.cn\");\n",
|
|
|
|
|
"string firstIp = ips.FirstOrDefault().ToString();\n",
|
|
|
|
|
"\t\n",
|
|
|
|
|
"foreach (var ipAddress in ips)\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" Console.WriteLine(ipAddress.MapToIPv4().ToString());\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"{ //\n",
|
|
|
|
|
" var ips = await Dns.GetHostAddressesAsync(global_queryDomain);\n",
|
|
|
|
|
" string firstIp = ips.FirstOrDefault().ToString();\n",
|
|
|
|
|
" \n",
|
|
|
|
|
" foreach (var ipAddress in ips)\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" Console.WriteLine(ipAddress.MapToIPv4().ToString());\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"//自定义行为\n",
|
|
|
|
|
"var socketsHandler2 = new SocketsHttpHandler\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" PooledConnectionLifetime = TimeSpan.FromSeconds(1),\n",
|
|
|
|
|
" PooledConnectionIdleTimeout = TimeSpan.FromSeconds(1),\n",
|
|
|
|
|
" MaxConnectionsPerServer = 1\n",
|
|
|
|
|
"};\n",
|
|
|
|
|
" //自定义行为\n",
|
|
|
|
|
" var socketsHandler2 = new SocketsHttpHandler\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" PooledConnectionLifetime = TimeSpan.FromSeconds(1),\n",
|
|
|
|
|
" PooledConnectionIdleTimeout = TimeSpan.FromSeconds(1),\n",
|
|
|
|
|
" MaxConnectionsPerServer = 1\n",
|
|
|
|
|
" };\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var client2 = new HttpClient(socketsHandler2);\n",
|
|
|
|
|
" var client2 = new HttpClient(socketsHandler2);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"for (var i = 0; i < 5; i++)\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" if(i>0)\n",
|
|
|
|
|
" for (var i = 0; i < 5; i++)\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" await Task.Delay(TimeSpan.FromSeconds(2));\n",
|
|
|
|
|
" if(i>0)\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" await Task.Delay(TimeSpan.FromSeconds(2));\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
" _ = await client2.GetAsync(global_queryBaseUrl);\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
" _ = await client2.GetAsync(\"http://soft.pwidc.cn\");\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Console.WriteLine(\"程序运行大约要10-20,请在程序退出后,执行下面命令行查看网络情况\");\n",
|
|
|
|
|
" Console.WriteLine(\"程序运行大约要10-20,请在程序退出后,执行下面命令行查看网络情况\");\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"//调用命令行,显示查看网络情况\n",
|
|
|
|
|
"string command = $\"netstat -ano | findstr {firstIp}\";\n",
|
|
|
|
|
" \n",
|
|
|
|
|
"// 创建一个新的ProcessStartInfo对象\n",
|
|
|
|
|
"ProcessStartInfo startInfo = new ProcessStartInfo(\"cmd\", $\"/c {command}\")\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" RedirectStandardOutput = true, // 重定向标准输出\n",
|
|
|
|
|
" UseShellExecute = false, // 不使用系统外壳程序启动\n",
|
|
|
|
|
" CreateNoWindow = true // 不创建新窗口\n",
|
|
|
|
|
"};\n",
|
|
|
|
|
" \n",
|
|
|
|
|
"// 启动进程\n",
|
|
|
|
|
"using (Process process = Process.Start(startInfo))\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
" // 读取cmd的输出\n",
|
|
|
|
|
" using (StreamReader reader = process.StandardOutput)\n",
|
|
|
|
|
" //调用命令行,显示查看网络情况\n",
|
|
|
|
|
" string command = $\"netstat -ano | findstr {firstIp}\";\n",
|
|
|
|
|
" \n",
|
|
|
|
|
" // 创建一个新的ProcessStartInfo对象\n",
|
|
|
|
|
" ProcessStartInfo startInfo = new ProcessStartInfo(\"cmd\", $\"/c {command}\")\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" RedirectStandardOutput = true, // 重定向标准输出\n",
|
|
|
|
|
" UseShellExecute = false, // 不使用系统外壳程序启动\n",
|
|
|
|
|
" CreateNoWindow = true // 不创建新窗口\n",
|
|
|
|
|
" };\n",
|
|
|
|
|
" \n",
|
|
|
|
|
" // 启动进程\n",
|
|
|
|
|
" using (Process process = Process.Start(startInfo))\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" string stdoutLine = reader.ReadToEnd();\n",
|
|
|
|
|
" Console.WriteLine(stdoutLine);\n",
|
|
|
|
|
" // 读取cmd的输出\n",
|
|
|
|
|
" using (StreamReader reader = process.StandardOutput)\n",
|
|
|
|
|
" {\n",
|
|
|
|
|
" string stdoutLine = reader.ReadToEnd();\n",
|
|
|
|
|
" Console.WriteLine(stdoutLine);\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
" }\n",
|
|
|
|
|
"}"
|
|
|
|
|
]
|
|
|
|
@ -417,8 +459,8 @@
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"#!set --value @csharp:firstIp --name queryIp\n",
|
|
|
|
|
"netstat -ano | findstr $queryIp"
|
|
|
|
|
"#!set --value @csharp:global_netstat_filter --name queryFilter\n",
|
|
|
|
|
"netstat -ano | findstr $queryFilter"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -439,50 +481,114 @@
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
},
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
},
|
|
|
|
|
"vscode": {
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"\n",
|
|
|
|
|
"using System.Net;\n",
|
|
|
|
|
"var ips = await Dns.GetHostAddressesAsync(\"www.google.com\");\n",
|
|
|
|
|
"\t\n",
|
|
|
|
|
"foreach (var ipAddress in ips)\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
"\t Console.WriteLine(ipAddress.MapToIPv4().ToString());\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var socketsHandler = new SocketsHttpHandler\n",
|
|
|
|
|
"/*\n",
|
|
|
|
|
"\t功能:将MaxConnectionsPerServer限制为2。然后启动200个任务,每个任务都向同一端点发出HTTP请求。这些任务将同时运行。所有请求竞争所花费的时间将写入控制台。\n",
|
|
|
|
|
"\t\t 随即调用用netstat命令查看连接:则根据定义的限制,我们可以看到两个已建立的连接。\n",
|
|
|
|
|
"*/\n",
|
|
|
|
|
"{\n",
|
|
|
|
|
"\tPooledConnectionLifetime = TimeSpan.FromSeconds(60),\n",
|
|
|
|
|
"\tPooledConnectionIdleTimeout = TimeSpan.FromMinutes(20),\n",
|
|
|
|
|
"\tMaxConnectionsPerServer = 2\n",
|
|
|
|
|
"};\n",
|
|
|
|
|
"\tConsole.WriteLine(\"开始请求网络...\");\n",
|
|
|
|
|
"\tvar socketsHandler = new SocketsHttpHandler\n",
|
|
|
|
|
"\t{\n",
|
|
|
|
|
"\t\tPooledConnectionLifetime = TimeSpan.FromSeconds(60),\n",
|
|
|
|
|
"\t\tPooledConnectionIdleTimeout = TimeSpan.FromMinutes(20),\n",
|
|
|
|
|
"\t\tMaxConnectionsPerServer = 2\n",
|
|
|
|
|
"\t};\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var client = new HttpClient(socketsHandler);\n",
|
|
|
|
|
"\tvar client = new HttpClient(socketsHandler);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var sw = Stopwatch.StartNew();\n",
|
|
|
|
|
"\tvar sw = Stopwatch.StartNew();\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"var tasks = Enumerable.Range(0, 200).Select(i => client.GetAsync(\"https://www.google.com\"));\n",
|
|
|
|
|
"\tvar tasks = Enumerable.Range(0, 200).Select(i => client.GetAsync(global_queryBaseUrl));\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"await Task.WhenAll(tasks);\n",
|
|
|
|
|
"\tawait Task.WhenAll(tasks);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"sw.Stop();\n",
|
|
|
|
|
"\t\n",
|
|
|
|
|
"Console.WriteLine($\"{sw.ElapsedMilliseconds}ms taken for 200 requests\");\n",
|
|
|
|
|
"\t\n",
|
|
|
|
|
"//执行查看网络状态方法"
|
|
|
|
|
"\tsw.Stop();\n",
|
|
|
|
|
"\t\t\n",
|
|
|
|
|
"\tConsole.WriteLine($\"共请求了200次,耗时 {sw.ElapsedMilliseconds} 毫秒\");\n",
|
|
|
|
|
"\t\t\n",
|
|
|
|
|
"\t//执行查看网络状态方法\n",
|
|
|
|
|
"\tConsole.WriteLine(\"当前网络状态\");\n",
|
|
|
|
|
"\tvar message = CmdUtility.RunCmd($\"netstat -ano | findstr {global_netstat_filter}\");\n",
|
|
|
|
|
"\tConsole.WriteLine(message);\n",
|
|
|
|
|
"}"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
"language": "pwsh"
|
|
|
|
|
},
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
"kernelName": "pwsh"
|
|
|
|
|
},
|
|
|
|
|
"vscode": {
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 重新查询当前网络状态\n",
|
|
|
|
|
"#!set --value @csharp:global_netstat_filter --name queryFilter\n",
|
|
|
|
|
"netstat -ano | findstr $queryFilter"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"该代码将MaxConnectionsPerServer限制为2。然后启动200个任务,每个任务都向同一端点发出HTTP请求。这些任务将同时运行。所有请求竞争所花费的时间将写入控制台。\n",
|
|
|
|
|
"如果使用netstat查看连接,则根据定义的限制,我们可以看到两个已建立的连接。\n",
|
|
|
|
|
"已建立\n"
|
|
|
|
|
"如果我们调整此代码以允许MaxConnectionsPerServer = 10,则可以重新运行该应用程序。耗时将减少大约4倍。"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"vscode": {
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"{ //MaxConnectionsPerServer 设置为10:网络连接将增加到10个,耗时将减少到1/4\n",
|
|
|
|
|
"\tConsole.WriteLine(\"开始请求网络...\");\n",
|
|
|
|
|
"\tvar socketsHandler = new SocketsHttpHandler\n",
|
|
|
|
|
"\t{\n",
|
|
|
|
|
"\t\tPooledConnectionLifetime = TimeSpan.FromSeconds(60),\n",
|
|
|
|
|
"\t\tPooledConnectionIdleTimeout = TimeSpan.FromMinutes(20),\n",
|
|
|
|
|
"\t\tMaxConnectionsPerServer = 10\n",
|
|
|
|
|
"\t};\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\tvar client = new HttpClient(socketsHandler);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\tvar sw = Stopwatch.StartNew();\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\tvar tasks = Enumerable.Range(0, 200).Select(i => client.GetAsync(global_queryBaseUrl));\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\tawait Task.WhenAll(tasks);\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\tsw.Stop();\n",
|
|
|
|
|
"\t\t\n",
|
|
|
|
|
"\tConsole.WriteLine($\"共请求了200次,耗时 {sw.ElapsedMilliseconds} 毫秒\");\n",
|
|
|
|
|
"\t\t\n",
|
|
|
|
|
"\t//执行查看网络状态方法\n",
|
|
|
|
|
"\tConsole.WriteLine(\"当前网络状态\");\n",
|
|
|
|
|
"\tvar message = CmdUtility.RunCmd($\"netstat -ano | findstr {global_netstat_filter}\");\n",
|
|
|
|
|
"\tConsole.WriteLine(message);\n",
|
|
|
|
|
"}"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|