2016-08-05 12 views
-1

In einem Versuch, TCP für schnelle und hohe Paketspiele zu verwenden, möchte ich die Paketverlusterkennung von TCP deaktivieren (Wenn ein Paket fehlschlägt, sendet es ein anderes), da dies die Zeit erhöht und es ist wirklich nicht nötig (es ist mir egal, ob 1-3 Pakete verloren gehen, mehr wird es in ein paar Sekunden überschreiben) Also, wie erreiche ich das mit der Programmiersprache C#?So deaktivieren Sie Paketverlustverhinderung TCP C#

+0

Ich habe keine Dokumentation gefunden, um dies zu ändern, so dass es nicht viel zu versuchen gibt. Ich habe jedoch versucht TcpClient.NoDelay = true; was nicht tut, was ich dachte, dass es getan hat. –

Antwort

2

Verwenden Sie stattdessen UDP! Sie können es nicht deaktivieren.

Update:
Also habe ich nur nach Informationen zu dieser Frage gesucht und festgestellt, dass das Deaktivieren der Neuübertragung vom Betriebssystem möglich ist, aber zum Abbruch der Verbindung führen wird - was meine ursprüngliche Aussage unterstützt. Und die Nebenwirkungen werden für das gesamte Betriebssystem problematisch sein.

Für Windows: https://support.microsoft.com/en-us/kb/170359

Es wird sicherlich auch eine Einstellung für andere Betriebssysteme sein.

+0

Ich möchte vermeiden, UDP zu verwenden, da ich gerne tatsächliche Verbindungsstatus habe. Kann ich noch etwas anderes tun? –

+2

Implementieren Sie die Verbindungsstatus in Ihrem Programm. Dann benutze UDP. TCP erfordert, dass alle Pakete vom empfangenden Ende bestätigt werden. Es ist eine grundlegende Eigenschaft von TCP. –