Netzwerk übertragung
Übersicht

![]() |
kogBetreff: Netzwerk übertragung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich machte mir letzen paar gedanken wegen der Netzwerk übertragung in UDP oder so.
Lösung 1: Packet Erstellen (WriteByte und co) Direkt absenden Lösung 2: Packet Erstellen (WriteByte und co) Packet zu einer Liste hinzufügen Alle Packete in der Liste am ende des Frames abschicken Lösung 1 kann ja mal schnell zu einem Overflow an Daten kommen, da dann die Firewall des Clienten denkt, wäre eine Attacke und blockiert es. Ist Lösung 2 daher gut oder kann es zu problemen bei der Übertragung kommen, wegen der geschwindigkeit? |
||
![]() |
mahe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest gar nicht so viel senden dass der Client denkt, es wäre eine Attacke.
Wenn Du die Möglichkeit hast ist ein eigener Thread für die Datenübertragung am praktischsten. |
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich mache vor kurzer Zeit mal ein Spiel mit vielen Gegnern...
Als ich die Daten gesendet hatte beim Login, bekam ein Freund die nicht, und die Firewall meldete eine Attacke. Also wie löse ich es am besten, wenn mehrere Gegner unterwegs sind? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du pro Frame 200 Pakete oder so losschickst, kommt das einer DDos Attacke schon ziemlich nah. Aber keine Angst, nach ein paar Sekunden wirst du dann kurzzeitig vom Internet getrennt.
(Auf jedenfall wenn du kontinuierlich übertrieben viele Daten rausschickst.) Du musst ja nichtmal jedes Frame die Nachrichten absenden. Und nur alle absenden die wirklich gebraucht werden. Außerdem könntest du einfach deine normalen WriteByte, ect Befehle benutzen, und nur am Ende der Schleife ein SendUDPMsg ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
mahe |
![]() Antworten mit Zitat ![]() |
---|---|---|
kog hat Folgendes geschrieben: Als ich die Daten gesendet hatte beim Login, bekam ein Freund die nicht, und die Firewall meldete eine Attacke.
Kann aber auch sein, dass er nur explizit den entsprechenden Port freigeben bzw. zuweisen müsste. Auf jeden Fall immer so wenig wie möglich senden und lieber den Clienten selber mehr rechnen lassen. |
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beim Login sendet man aber normalerweise nicht viele Daten. Das ist merkwürdig. Von einer Attacke kann doch erst dann die Rede sein, wenn man förmlich zugespamt wird. | ||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest am Besten die Netzwerkübertragung nur zum Synchronisieren der Daten nutzen.
D.h. du lässt z.B. bei einem Shooter alle Spieler nur 2 bis 5 mal pro Sekunde abgleichen und den Rest berechnest du aus diesen Daten weiter. Dies würde die Datenmenge erheblich senken. Du solltest aber die Daten auch auf jeden Frame aufteilen. Sonst könnten die zu großen Brocken das Programm kurzzeitig aufhalten und es würde ein paar mal pro Sekunde zu "Rucklern" kommen. Du solltest auch eher, wenn du viele Daten auf einmal verschicken musst, wenige große statt viele kleine Pakete verschicken, da jedes Paket einen nicht zu unterschätzenden Header hat. Optimal ist also ein Paket auf einmal. Ich habe übrigens mit einem eigenen TCP-Datenübertragungsprogramm einige Erfahrungen mit der Paketgröße gemacht. Dort hat das Anheben der Paketgrößen Wunder gewirkt. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Demnach ist mein Lösungsatz 2 nicht schlecht?
Gut mache ich mich daran was Simples zu basteln. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nja so groß ist der Header jetzt auchnicht.
Ein UDP-Header ist 8 Bytes groß, was bei heutigen Leitungen nicht viel ausmacht, wenn man anstatt 1 mal 2 Pakete versendet. Dann kommt aber noch der IP4 Header dazu, der 20-60 Bytes lang ist. Nicht zu verachten ist auch, dass das ganze dann noch durchs Netz geschickt werden muss, und dabei in jedem Netzwerk ein lokaler Ethernet Header (inkl. Präambel,ect) mitgesendet werden muss. |
||
Twitter
Download Jewel Snake! Windows|Android |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group