UDP vs. TCP
Übersicht

.Yukito.Betreff: UDP vs. TCP |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich hab mich damit noch nicht recht beschäftigt und wollte mal fragen:
UDP => Internet? TCP => Netzwerk? also wofür man es vorzugsweise nehmen sollte... und bei UDP hatte ich so ein kleines problem. in der blitzbase hilfe steht, das wenn man bei sendudpmsg den port nicht angibt, wird der standard port, den man in CreateUDPStream verwendet hat, verwendet. seltsamerweise funzt es nur, wenn ich ihn angebe... ![]() |
||
AMD 2000+, 512MB DDR, ATI Radeon 9000, 80 GB HDD, DX9.0, C4D 8.0, Adobe Photoshop 7.0 |
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falsches Forum ![]() Ich hab mich zwar selber noch nicht mit Netzwerkcode beschäftigt, aber ich habe gehört, dass das Blitz TCP ur langsam sein soll (wegen irgend so einem Anitpackageverliermechanismus). Wie wärs, wenn du einfach mal beides ausprobierst und das Ergebnis nochmal postest? Also von der Geschwindigkeit und von der Einfachheit. Übrigens gilt das UDP = Internet / TCP = Netzwerk nicht. UDP und TCP sind Protokolle und nicht Hardwaregebunden (jedenfalls nicht so ![]() |
||
![]() |
DCSieger des B2D Retro Wettbewerb / Aug 04 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe beides ausprobiert und denke behaupten zu können, dass UDP für "schnelle" Spiele die erste Wahl sein sollte. Grund: Die von Eizdealer erwähnte Routine die dafür sorgt, dass die Nachrichten ankommen. Die alleine wäre halb so schlimm, allerdings kommt in Blitz Basic ein Aspekt hinzu, der TCP für schnelle Spiele praktisch unbrauchbar macht: Blitz Basic hält beim Versenden von TCP Nachrichten komplett an, bis vom Empfänger die Antwort kommt. Das führt unweigerlich zu Rucklern. DirectPlay scheint das ganze auch zu verwenden (zumindest bei als wichtig deklarierten Nachrichten) was auch dort für Ruckler sorgt.
Ich hab bei CS2D ja mal TCP probiert da bei UDP nicht alles ankommt - hat bei mehreren Spielern ordentlich geruckelt - bei 2 gings aber noch. Der beste Weg für schnelle Multiplayer Games wie z.B. Shooter, ist dann wohl UDP mit eigenen Routinen die es einem ermöglichen Nachrichten so zu senden, dass sie wirklich ankommen. BlitzPlay hat sowas glaub ich. Mit Types lässt es sich aber auch relativ einfach realisieren. |
||
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com | www.CarnageContest.com | www.Stranded3.com |
furbolg |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DC hat Folgendes geschrieben: Ich habe beides ausprobiert und denke behaupten zu können, dass UDP für "schnelle" Spiele die erste Wahl sein sollte. Grund: Die von Eizdealer erwähnte Routine die dafür sorgt, dass die Nachrichten ankommen. Die alleine wäre halb so schlimm, allerdings kommt in Blitz Basic ein Aspekt hinzu, der TCP für schnelle Spiele praktisch unbrauchbar macht: Blitz Basic hält beim Versenden von TCP Nachrichten komplett an, bis vom Empfänger die Antwort kommt. Das führt unweigerlich zu Rucklern. DirectPlay scheint das ganze auch zu verwenden (zumindest bei als wichtig deklarierten Nachrichten) was auch dort für Ruckler sorgt.
Ich hab bei CS2D ja mal TCP probiert da bei UDP nicht alles ankommt - hat bei mehreren Spielern ordentlich geruckelt - bei 2 gings aber noch. Der beste Weg für schnelle Multiplayer Games wie z.B. Shooter, ist dann wohl UDP mit eigenen Routinen die es einem ermöglichen Nachrichten so zu senden, dass sie wirklich ankommen. BlitzPlay hat sowas glaub ich. Mit Types lässt es sich aber auch relativ einfach realisieren. Das kommt nicht von Blitz Basic sondern direkt von Winsock, unter C/C++ gibts die möglichkeit das ganze mit select zu machen. Is fast so schnell wie UPD und so sicher wie TCP IP, nur das warten wird anders gelöst (interner thread oder sowas). Bei Blitz wird ich für Ego und alles was schnell sein Muss UPD nehmen, für Strategie lieber TCP IP, da dort die einzelnen Messages wichtig sind. (wenn man wenig senden will gibts da paar kniffe, stichwort bit shifting, huffman etc). |
||
kstadler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
furbolg hat Folgendes geschrieben: Bei Blitz wird ich für Ego und alles was schnell sein Muss UPD nehmen, für Strategie lieber TCP IP, da dort die einzelnen Messages wichtig sind. (wenn man wenig senden will gibts da paar kniffe, stichwort bit shifting, huffman etc). Ich stimme dem voll und ganz zu. Ich hoffe mit UPD meinst du udp. Wenn's jemanden interessiert. TCP und UDP sind beides Transportprotokolle des TCP/IP Schichtenmodel. TCP ist verbindungsorientiert, d.H. es gibt einen Verbindungsauf/abbau und fehlende Pakete werden erneut angefordert. UDP dagegen ist verbindungslos, man muss also auf einer höheren Schicht kontrollieren, ob alle Pakete angekommen sind. Weiter ist der Header von udp sehr Schlank, produziert also wenig Overhead. Dies ist der Grund das FPS Engines wie QUAKE z.B. udp benutzen. Ich hoffe das hilft bei der Entscheidung etwas weiter. |
||
.Yukito. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab mich für UDP entschieden ^^
thx |
||
AMD 2000+, 512MB DDR, ATI Radeon 9000, 80 GB HDD, DX9.0, C4D 8.0, Adobe Photoshop 7.0 |
![]() |
Peer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab schon mehrere Netztwerk/Internetspiele geschrieben und arbeite gerade auch an einen.
Vorteil TCP: Die Pakete kommen immer und in der reihenfolge an wie du sie abgeschickt hast Nachteil TCP: Langsamer als UDP Vorteil UDP: Schnell(sehr schnell) Nachteil UDP: FIREWALLS!!! Die meisten Firewalls haben probleme mit UDP da es ein verbindungsloses Protokoll ist. Also wenn ihr ein Actionbasiertes Spiel proggt werdet ihr fast nicht um UDP herumkommen. Sobald es aber in Richtung Strategie oder Rundenbasiert geht würde ich nur TCP verwenden. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group