UDP-Buffer löschen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Frostie
User
Beiträge: 15
Registriert: Freitag 14. April 2017, 18:16

Sonntag 21. Januar 2018, 20:34

Hallo!

Ich stehe vor dem Problem dass der Buffer mit zu vielen Nachrichten überfüllt wird und die Geschwindigkeit in der die Nachrichten abgearbeitet werden zu gering ist. Ich möchte ca. jede Sekunden oder so den Buffer clearen damit ich immer die neusten Nachrichten bekomme und die alten verbleibenden einfach löschen kann. Wie bekomme ich sowas hin?

Vielen Dank für eure Hilfe! :)

Grüße, Daniel
__deets__
User
Beiträge: 3499
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 21. Januar 2018, 21:03

Mir ist kein solcher Buffer bekannt. Insofern wuesste ich auch nicht, was du da loeschen koennen solltest. Wenn du selbst einen solchen Buffer anlegst, dann kannst du den doch auch leeren?
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 21. Januar 2018, 21:53

Der Kernel hat UDP Buffer für ein- und ausgehende Pakete. Ich denke du würdest hinbekommen was du willst indem du die Größe reduzierst, so dass kein Backlog entstehen kann.

Wobei letztendlich die Verarbeitung zu optimieren mir doch als sinnvoller erscheint.
__deets__
User
Beiträge: 3499
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 21. Januar 2018, 21:58

@DasIch klar, der Kernel hat Buffer fuer so ziemlich alles. Aber darauf hat man ueblicherweise wenig bis keinen Einfluss. Ich habe zumindest noch nicht einmal Code gesehen, der insbesondere beim lesen irgendwie darauf Einfluss nehmen wuerde. Irgendwas mit ioctl mag natuerlich gehen, aber das ist dann auch OS-spezifisch. Und klar, man kann flush aufrufen, aber wer das nicht tut, und stattdessen am tropfenden Ende einer Pipe haengt, der hat auch da so weit ich weiss keinen Stich.
Frostie
User
Beiträge: 15
Registriert: Freitag 14. April 2017, 18:16

Montag 22. Januar 2018, 18:01

Hab einen Workaround gemacht. Ich sende Nachrichten jetzt nur noch 60 mal die Sekunde. Macht auch Sinn weil mein Blender Game auch mit 60fps läuft. Funktioniert jetzt super! Alle Spieler sind jetzt ohne Verzögerung auf der Map :)
Antworten