我正在嘗試開發一些小應用來測量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