Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Denkanstoß für kleines Projekt (https://www.delphipraxis.net/172596-denkanstoss-fuer-kleines-projekt.html)

ByTheTime 13. Jan 2013 15:56

Denkanstoß für kleines Projekt
 
Weiß garnicht ob das hier reinpasst, hat aber was mit Netzwerk zu tun :D
Ich möchte eine Art kleines FileSharing Netzwerk programmieren (über Sinn und Unsinn möchte ich hier jetzt nicht diskutieren). Ich würde das ganze gerne mit 5-10 Freunden ausprobieren. Das ganze soll ja kostenlos sein (also keine Kosten für den Anwender und für mich), daher fallen so Ideen wie Server mieten schonmal weg. DEn bei 5-10 Leuten fällt dementsprechend viel Traffic an, mit dem meine 6000er Leitung nciht mithält :P Deshalb habe ich mir überlegt das ganze so Peer-To-Peer Mäßig zu machen. Jetzt steh ich aber vor ein paar Problemen:
1. Könnte man dafür auch FTP benutzen? Zur Datenübertragung bringt es ja genug mit und soweit ich weiß kann man auch eigene Kommandos definieren und verarbeiten. Oder doch lieber Sockets und ein eigenes Protokoll bzw. die TCP Indys. Hier ist das Problem, das der Normalverbraucher große Augen mach, wenn mann ihm sagt, das er bitte den Port 62195 an seinem Router weiterleiten soll :P Hier ist ja FTP im Vorteil und auch UDP bittet sich an.

2. Es geht darum eine Art Community zu bilden die jederzeit erreichbar ist ohne Server. Ich könnte zumindesten meinen Heim-PC als MasterServer nutzen, der die IP-Adressen für das Peer-To-Peer bereitstellt (bei dem sich halt die einzelnen Programme immer melden und ihr IP übergeben). Ich könnte mir vorstellen das der "Client" (ich nenne ihn mal so, auch wenn es ja bei P2P keiner ist) von jeder Datei die man freigeben möchte einen MD5-Hash erstellt und dann eine Liste an den Masterserver übermittelt. Der Masterserver fast dann zusammen, welche Dateien auf welchem Rechner liegen (um Dopplungen in der Liste zu vermeiden). Dann kann man sich eine Datei von einer Person runterladen oder vllt. sogar von mehreren. Das wäre dann ja ziemlich Torrent ähnlich.

Hat jemand schonmal etwas ähnliches gemacht? Oder vllt. hat auch einer eine Idee was das angeht.

Danke,
Lukas :)

sx2008 13. Jan 2013 19:55

AW: Denkanstoß für kleines Projekt
 
Also ich denke es fehlt Dir an Erfahrung eine Peer-2-Peer Software zu programmieren.
Nix für ungut.

Mein Vorschlag:
richte ein privates Bittorrent Netzwerk ein.
Dazu benötigst du einen Tracker sowie einen Webserver zu Verteilung der Torrent-Dateien.
Kleine Übersicht über Tracker Software: http://en.wikipedia.org/wiki/Compari...acker_software

Damit der Tracker über Internet erreichbar ist benötigt er einen DNS-Eintrag.
http://www.pcwelt.de/ratgeber/DynDNS...s-5680355.html
Der Webserver bietet einfach eine Liste aller Torrentdateien zum Download an.
Mit etwas programmieraufwand kann man den Teilnehmern auch ermöglichen neue Torrentdateien + Beschreibung hochzuladen.

Wenn du das System am Laufen hast, dann kannst du auch mal den Sourcecode von file sharing Software studieren
http://sourceforge.net/directory/com...ng/os:windows/

Aphton 13. Jan 2013 20:53

AW: Denkanstoß für kleines Projekt
 
Ich hab mal etwas ähnliches gemacht. Ein kleines P2P Filesharing Tool mit Augenmerk auf das Fortsetzen eines Downloads bzw. Uploads.
Nun.. ein ehem. Kumpel hat mir dann die Idee und Arbeit zum größten Teil abgenommen..
Es ist ein sehr interessantes Thema. Ich würde es trotzdem nicht unterschätzen.

Ich würd das auch so ähnlich wie bei Torrent machen.
Vlt aber auch ein bisschen anders bzw. mit Eigenheiten.
- Über einen zentralen Knoten (MasterServer) wird geregelt, wer Online ist, welche Gruppen es gibt, wie man einer Gruppe beitritt usw usf.
Sofern man natürlich Gruppen haben will.
- Jedes Mitglied (Peer) gibt in der Gruppe bekannt, was es sharen will.
- Dateien werden in Chunks mit fixer Größe unterteilt (8-32 kb). Eine 1 mb Datei hätte bei einer Chunkgröße von 32 kb 32 Chunks.
diese werden per UDP geschickt.
- Ein Chunk enthält eine Prüfsumme, ChunkID, Name und Inhalt
- Jeder kann von jedem saugen; verschiedene Chunks können von verschiedenen Peers simultan runtergeladen werden.

Das sind so meine ersten Gedanken dazu.
Wichtig für solch ein Projekt ist es imho, dass man solide Programmierkenntnisse (speziell Netzwerkprogrammierung) hat.

Wenn ich mir deine Beiträge anschaue, dann zweifle ich daran.. =/
Über die Idee an sich können wir aber gerne weiterhin plaudern. Wie gesagt, ich find, es ist ein interessantes Thema.

ByTheTime 14. Jan 2013 21:37

AW: Denkanstoß für kleines Projekt
 
Ja, das es da an Programmierfähigkeiten hapert kann ich mir schon vorstellen. Aber zumindestns die Grundzüge würde ich mir gerne erarbeiten. Vllt. bekomm ich es ja dann irgendwie gebacken, zumindestens in kleinem Umfang.

sx2008 15. Jan 2013 06:24

AW: Denkanstoß für kleines Projekt
 
Zitat:

Zitat von ByTheTime (Beitrag 1199036)
Aber zumindestns die Grundzüge würde ich mir gerne erarbeiten

1.)
Grundvorraussetzung ist, dass dein Rechner aus dem Internet erreichbar ist!
Dazu muss die IP-Adresse (die sich spätestens nach 24 Std ändert) ermittelbar sein.
Dazu gibt es (freie) DNS-Dienste um von dem Rechnernamen auf die aktuelle IP-Adresse zu kommen.
Siehe Link in meinem 1. Posting.
2.)
Auf deinem Rechner muss ein Webserver laufen, damit man aus dem Internet zumindest eine Übersicht bekommt welche Dateien angeboten werden.
Installiere also einen Webserver (z.B. Apache) mit mindestens einer eigenen HTML-Seite.
3.)
Dein Router muss den Zugriff von Aussen (Internet) auf den Webserver mit Port 80 zulassen.
Stichwort NAT.
Du musst also deinen Router dazu "überreden" Datenpakete aus dem Internet mit Port 80 an deinen Rechner weiterzugeben.
Wie das genau geht, hängt von deinem Router ab.

Bevor du nicht die Schritte 1 bis 3 erfolgreich gemeistert hast, ist jede weitere Diskussion substanzlos.

user0815 15. Jan 2013 06:59

AW: Denkanstoß für kleines Projekt
 
hört sich nach: Wippien oder Hamachi an.

bernhard_LA 15. Jan 2013 09:51

AW: Denkanstoß für kleines Projekt
 
wenn im ersten Schritt darum geht Files mit TCP IP Server (INDY) zu übertragen um lokalen netzwerk indest Du unter http://sourceforge.net/projects/indy10clieservr/ entsprechende Demo Codes


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz