PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : User to User Filetransfer



sxe
20-11-2009, 21:31
Hallo zusammen,

ich hab mir überlegt mal wieder etwas zu programmieren. Eine Idee habe ich auch schon mit fehlt aber der Ansatz, wie ich das ganze realisieren könnte.
Ich möchte zwei Benutzern meiner Webseite die Möglichkeit bieten eine Datei auszutauschen, ohne das sie dazu auf meinem Webserver gespeichert werden muss. Das soll dann so aussehen, dass der Benutzer 1 über einen normalen Fileupload eine Datei auswählt, dann ein link erzeugt wird, den er Benutzer 2 geben kann und Benutzer 2 dann direkt von Benutzer 1 die Datei empfängt ohne das dem Webserver für den Transfer Traffic ensteht.

Meine Gedanken gehen momentan in die Richtung:
Benutzer 1 stellt die Anfrage an den Webserver, der Webserver merkt sich die Anfrage, generiert den Link. Benutzer 2 bekommt den Link und signalisiert damit seine Downloadbereitschaft. Nun muss der Webserver die IP von Benutzer 2 mit der Anfrage von Benutzer 1 koppeln um den Download bzw. Upload einzuleiten.

Da ich noch keinen wirklichen Ansatzpunkt habe wär ich über jeden Tip, Codeschnipsel oder anderweitige Informationen dankbar. Schön wäre, wenn das ganze mit einer Skriptsprache realisiert würde. Am liebste PHP oder Perl.

Ich hoffe man konnte meinen Gedanken folgen. :)

Danke schonmal

Andy

bischi
21-11-2009, 11:08
Das wirst du nicht als reine Server-App schreiben können (wär ja noch schöner, wenn irgend jemand eine Datei von meinem Computer anfordern könnte und diese ihm dann geschickt würde ^^). Ist wohl aber eher komplex - ich würd mich mal über Bit-torrent informieren (da wird das ja - afaik - in etwa so gemacht...).

MfG Bischi

undefined
21-11-2009, 11:32
Ich mache so etwas ähnliches mit FTP und meinem DSL Modem.
Wenn es sich mit Internet verbindet sendet er ein push an meinen Server der die Adresse speichert. Es gibt verschieden Hacks für die AVM Modems weil sie ein Linux Kernel haben. ;)
http://www.wehavemorefun.de/fritzbox/Firmware_Modifikationen_/_Recompiling

sxe
21-11-2009, 11:49
Hey ihr beiden. Danke für die Antworten. Ich bin selber ja auch immer noch am zweifeln ob das geht. Ich hatte gehofft, dass hier jemand besser darüber bescheid weiss als ich. :)


(...) (wär ja noch schöner, wenn irgend jemand eine Datei von meinem Computer anfordern könnte und diese ihm dann geschickt würde ^^). Ist wohl aber eher komplex - ich würd mich mal über Bit-torrent informieren (da wird das ja - afaik - in etwa so gemacht...).

MfG Bischi
Es fordert ja nicht jemand eine Datei an. Ich gebe eine Datei zum Tausch frei (biete sie also an), der Server vermittelt nur diese Datei und auch nur diese Datei kann denn der Andere runter laden. Bittorrent ist mir bekannt. Das geht aber nicht ohne eine zusätzliche Anwendung. Ich möchte, wenn es geht, dass ganze im Browser realisieren.

@undefined
Ich sehe den Zusammenhang zu dem was ich geschrieben habe nicht.

undefined
21-11-2009, 18:07
......................
@undefined
Ich sehe den Zusammenhang zu dem was ich geschrieben habe nicht.
Mein DSL Modem hat ein FTP Zugang.
Wenn ich mich mit dem Internet Verbinde sendet er an meinen Server die IP.
Mein Server logt die IP für FTP in eine Apache.conf und macht ein reload.
Über Apache und dem Module mod_proxy leite ich den FTP Zugang auf meinen Webserver um.
Ab jetzt können Angemeldete Freunde auf meine Lokalen FTP Zugreifen ohne das ich einen Dynamischen DNS Zugang benötige.

peschmae
21-11-2009, 18:38
Es fordert ja nicht jemand eine Datei an. Ich gebe eine Datei zum Tausch frei (biete sie also an), der Server vermittelt nur diese Datei und auch nur diese Datei kann denn der Andere runter laden. Bittorrent ist mir bekannt. Das geht aber nicht ohne eine zusätzliche Anwendung. Ich möchte, wenn es geht, dass ganze im Browser realisieren.


Das heisst du möchtest einen Bittorrent Client in Javascript schreiben?

MfG Peschmä

msi
24-11-2009, 21:21
als webanwendung wird das nicht funktionieren.

sxe
24-11-2009, 22:42
Hi zusammen,

nun hatte ich doch glatt vergessen zu antworten. Bin mittlerweile auch der Meinung das das nicht geht. Man müsste das schon mit Java applets oder dergleichen machen.

Trotzdem vielen Dank für eure Anmerkungen.

Adios

msi
25-11-2009, 17:10
Hi zusammen,

nun hatte ich doch glatt vergessen zu antworten. Bin mittlerweile auch der Meinung das das nicht geht. Man müsste das schon mit Java applets oder dergleichen machen.

Trotzdem vielen Dank für eure Anmerkungen.

Adios

auch das geht nicht. eine Verbindung ohne server ist uU sogar überhaupt nicht möglich. bei heise gabs mal einen interessanten artikel darüber wie skype das macht (firewalls durchbohren). Wobei auch Skype uU auf
einen Server als zwischenstation zurückgreift.

sxe
25-11-2009, 17:50
hi msi,

also ohne mich zu weit aus dem Fenster zu legen meine ich gelesen zu haben, dass es möglich ist eine Applet zu Applet Kommunikation aufzubauen. Vorausgesetzt sie kommen vom gleichen Server und man signiert sie.

Kann mich aber auch irren. Hab mich da noch nicht tiefer eingearbeitet.

Grüße

RHBaum
26-11-2009, 15:27
Ich möchte, wenn es geht, dass ganze im Browser realisieren.
mit sockets iss ne ganze menge moeglich, weiss ned welche virtuelle Umgebung (runtimes) sowas erlauben und ob mans im browser in scharfschalten kann ^^
- denk mal die 1. kleine huerde wird sein, zugriffs aufs filesystem zu bekommen.
aber wenn man das als normalen download "verkleided" sollts wiederum kein problem sein.
- die wesentlich roessere heurde sehe ich im aufbau einer peer to peer verbindung. bei HTTP kontaktiert man den server .... du willst das jemand, evtl ueber nen server, deinen client kontaktiert. das wird nicht moeglich sein. die meisten firewalls / proxies lassen keine Aufrufe von aussen zu, man muesste extra portforwarding aktivieren.

besser : den server die datei steuckchenweisse entgegennehmen lassen (nicht vollstaendig) und das gleich an den anderen rausgeben ....
das sollt man vielleicht machen koennen ....
wie gesagt um ein Handling ala, ich hab eine datei zum downloaden fuer dich , klick mal genau in den naechsten 2 sek auf den temp. link .... wirst ned herumkommen. Dazu sind die clients viel zu dynamisch aufgestellt, als das du sie von nem server aus triggern kannst, sondern sie muessen immer den server triggern.

Ciao ...

msi
27-11-2009, 11:49
hi msi,

also ohne mich zu weit aus dem Fenster zu legen meine ich gelesen zu haben, dass es möglich ist eine Applet zu Applet Kommunikation aufzubauen. Vorausgesetzt sie kommen vom gleichen Server und man signiert sie.

Kann mich aber auch irren. Hab mich da noch nicht tiefer eingearbeitet.

Grüße

das funktioniert sicher nicht applet zu applet ohne server dazwischen.
der grund ist die meisten rechner sind hinter einer nat firewall. Dadurch
können sie zwar nach außen verbinden, aber keine verbindungen von außen
annehmen.
aus diesem grund hast du eignetlich nur die möglichkeit den server als host dazwischen zu nutzen über den der ganze datenverkehr läuft.

so und im widerspruch zu meiner oberen aussage ;):
es gibt jedoch tatsächlich möglichkeiten eine host zu host verbindung aufzubauen, jedoch funktioniert das a) nicht immer und b) ist es aufwendig und c) funktioniert das nur mit udp. Wenn jemanden interessiert wie das funktioniert, hier ist der artikel wie skype das macht: http://www.heise.de/security/artikel/Wie-Skype-Co-Firewalls-umgehen-270856.html

jedoch vergiss es so eine anwendung schreiben zu wollen das ist wirklich aufwändig und du hast nur udp.. benutz lieber einen relay host. wenn du es doch versuchen willst informier dich auch mal noch über STUN vllt hilft dir das was ;) viel spaß