我正在尝试开发一些小应用来测量Wi-Fi吞吐量。我到目前为止的代码如下:TCP服务器吞吐量减慢
private void handle_connection(IAsyncResult result)
{
accept_connection();
client = listener.EndAcceptTcpClient(result);
long total = 0;
double start = DateTime.Now.TimeOfDay.TotalMilliseconds;
while ((flag))
{
try
{
NetworkStream ns = client.GetStream();
byte[] bytesFrom = new byte[1024 * 100];
ns.Read(bytesFrom, 0, (int)client.ReceiveBufferSize);
total += bytesFrom.Length;
double cost = DateTime.Now.TimeOfDay.TotalMilliseconds - start;
double megaBytes = (total/(1024.0 * 1024));
double seconds = Convert.ToDouble((cost/1000.0).ToString("0.00"));
float MB_Result = Convert.ToSingle((megaBytes/seconds).ToString("0.00"));
float Mbit_Result = MB_Result * 8;
Invoke(new System.Action(() => chart.Series["Mbps"].Points.AddXY(seconds, Mbit_Result)));
Invoke(new System.Action(() => currSpeedLbl.Text = Mbit_Result + " Mbit/s (" + MB_Result + "MB/s)"));
}
catch(Exception)
{
}
}
}
我尝试在图上显示我的结果。在传输的乞求下,我有大约60Mbit/s的速度,但一段时间后下降到1Mbit。我对网络编程非常陌生,所以我可能做了一些非常愚蠢的事情。我可以问一些建议吗?谢谢
对于初学者,停止忽略异常..你的问题就像“哦,我不想看到例外,但有些错误。告诉我什么,所以我没有太多读取这些例外” – jgauffin
你忽略'ns.Read'的结果。常见的错误。;不要在UI线程上运行阻塞代码。例如,将此工作转移到任务。 – usr
此时它在其他线程上工作。 – user1750355