我想發送一串低延遲的數據到另一個使用UDP的設備。C#UdpClient.Send得到的速度越來越慢
這是一個短代碼段能重現問題:
private void Form1_Shown(object sender, EventArgs e)
{
UdpClient udpClient = new UdpClient(9000);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 7000);
new Thread(() =>
{
Stopwatch stopwatch = new Stopwatch();
byte[] buffer = new byte[1922];
while (true)
{
stopwatch.Start();
udpClient.Send(buffer, buffer.Length, endPoint);
stopwatch.Stop();
Console.WriteLine("Sending took " + stopwatch.ElapsedMilliseconds + "ms"); // stopwatch.ElapsedMilliseconds gets higher and higher
Thread.Sleep(10);
}
}).Start();
}
緩衝器具有相同的大小,每次(在循環中)和數據包每10ms發送...正常。
但是,每隔300ms需要1毫秒的時間才能發送,所以在短時間內發送數據包需要1分鐘。
那裏有什麼問題,我該如何解決?
在我看來,好像這個問題太寬而不能回答,因爲你的問題而言特定的,而不是可以通過比在你的代碼示例中提供的其他方式引起一般情況。請提供更多細節。 – Lu4
我編輯了這篇文章,現在有一個代碼片段,它重現了這個問題。 – Skycoder