Ich möchte eine Reihe von Daten mit niedriger Latenz an ein anderes Gerät mit UDP senden.C# UdpClient.Send wird langsamer und langsamer
Dies ist ein kurzer Ausschnitt, der das Problem reproduziert:
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();
}
Der Puffer hat die gleiche Größe jedes Mal (in der Schleife), und die Pakete alle 10 ms gesendet ... normal.
Aber ca. alle 300ms dauert es 1 zusätzliche Millisekunde zu senden, also dauert es nach kurzer Zeit bereits 1 Minute, um ein Paket zu senden.
Was ist das Problem dort und wie repariere ich es?
Es scheint mir, als ob die Frage zu breit ist, da Ihre Frage spezifischer betrifft zu beantworten anstatt allgemeinen Fall, die durch andere Mittel als die verursacht werden können, in Ihrem Codebeispiel zur Verfügung gestellt wurden. Bitte geben Sie mehr Details an. – Lu4
Ich habe den Post bearbeitet, es gibt jetzt einen Codeausschnitt, der das Problem reproduziert. – Skycoder