Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

11

22.02.2014, 21:35

FTP nutzt TCP als Transportschicht, welches wiederum verbindungsorientiert arbeitet. Das heißt eine Seite muss auf dementsprechenden Port zuhören und es ist kein "punch through" möglich. Sprich wenn du P2P mit FTP/TCP realisieren willst und die Clients hinter Routern o.ä. sitzen, muss zumindest ein Teil die Ports öffnen. kA ob das für deinen Anwendungsfall praktikabel ist.

Einen Port "öffnen" muss man dann, wenn er vorher geschlossen war, was ich so interpretieren würde, dass da unter keinen Umständen Traficc passieren kann (bspw. wenn Port 80 "geschlossen" wäre/blockiert werden würde, könnte man keine Website öffnen). Es ist eher so, dass die Portweiterleitung eingestellt werden muss, damit der Router bei eingehenden (nicht ausgehenden) Anfragen weiß, wohin diese Anfragen weitergeleitet werden sollen.
Das ist bei UDP genau das gleiche und spielt hier also keine Rolle. Es hat auch nichts damit zu tun, dass TCP verbindungsorientiert ist.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

23.02.2014, 02:22

Es hat in sofern was mit UDP und TCP zu tun, weil man bei UDP ein "punch through" durchführen kann und somit die Notwendigkeit des manuellen Weiterleitens umgehen kann. Dieser funktioniert allerdings nicht bei TCP. Für Details siehe z.B. http://en.wikipedia.org/wiki/UDP_hole_punching .

Errata: hole punching scheint wohl auch bei TCP möglich zu sein. Ob es allerdings mit regulären sockets ohne weitere funktioniert, kann ich aktuell nicht sagen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nox« (23.02.2014, 02:29)


13

23.02.2014, 02:43

Theorie zu NAT im Allgemeinen und Hole Punching im Speziellen: http://www.net.in.tum.de/pub/mccn/2013/m…3_11_26_v02.pdf
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

14

23.02.2014, 11:42

Ok, "Hole Punching" bzw. "punch through" war mir bisher nicht bekannt. Das Problem dabei ist aber, dass dann zusätzlich ein Server benötigt wird, über den die Verbindung aufgebaut werden kann (auch wenn er zur eigentlichen Kommunikation dann nicht mehr erforderlich ist). Abgesehen davon muss der 2. Client irgendwie über die eingehende Verbindung informiert werden, da dieser sonst nicht die seinerseits erforderlich Anfrage an den Server schicken kann (sollte ich das Verfahren richtig verstanden haben.)
Ob das überhaupt erforderlich ist, ist abhängig von den Anforderungen, die hier ja nicht gelistet wurden. (Abgesehen von "einen einfachen p2p Dateiaustausch", ob mit dem "einfach" nun die Implementierung oder der Umfang gemeint ist, ist eine andere Sache.)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

23.02.2014, 13:01

Naja, mit "einfach" meinte ich sowohl Implementierung als auch Anspruch.
Ich möchte Dateien zwischen zwei (bzw. mehreren) Rechnern in einem p2p Netz austauschen. Internet muss nicht sein, daher wird wohl auch kein Router blocken können im lokalen Netzwerk.

Ich versuchs jetzt erstmal mit boost.asio und streaming...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

16

23.02.2014, 16:52

Was spricht dagegen einen Fileserver im LAN zu installieren?
Mit XAMPP ist das in 5 Minuten erledigt :P
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

17

23.02.2014, 18:02

Die Sache mit dem Internet ist auch im Prinzip nur Portweiterleitung. Dein Code sieht da im Prinzip gleich aus. Das liegt einfach am Aufbau des Netzwerks. Du hast dein Heimnetzwerk und der Router verbindet im einfachen Fall einfach die Rechner. Nach außen hin (ins Internet) ist der Router der Knoten der vorhanden ist. Willst du jetzt "durch das Internet" auf einen Rechner in deinem Netzwerk zugreifen, so schickst du die Anfrage zu dem Router un dieser Leitet das ganze dann an den jeweiligen Rechner und Port weiter. Das ist nur Konfigurationssache.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

18

23.02.2014, 23:29

JXSE habe ich mir mal vor Ewigkeiten angeschaut, die Community war aber schon damals recht ausgedünnt. Im Java Umfeld findest Du aber sicher einige Sachen. JGroups kannst Du innerhalb eines LANs sicher gut verwenden.

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

19

24.02.2014, 14:24

Wer redet hier von Java?
Das ganze läuft auf C++ und ist schon recht weit. Es fehlt nur noch der Netzwerkteil.

Gerade hab ich nur nicht sooo viel Zeit, aber ich melde mich mit meiner Lösung (oder Problemen) zurück :)

[Edit]

Oh du hast recht, steht gar nicht im Titel. Jetzt schon.
Netzwerk in Java hätte ich auch kein Problem... das hab ich schon mal gelöst.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

20

24.02.2014, 22:36

Darf man denn mal fragen, was genau dein Ziel ist? Warum willst du denn eigentlich im LAN per P2P Dateien austauschen?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige