Antwort schreiben  Thema schreiben 
Seiten (2): « Erste < Vorherige 1 [2] Letzte »
Verfasser Nachricht
Total_Noob
Developer
*


Beiträge: 496
Gruppe: Developer
Registriert seit: Dec 2009

Status: Offline
Danke erhalten: 2208
Beitrag: #16
RE: [WIP] Download Manager

Danke für den Tipp. Ich weiss ehrlich gesagt nicht viel über http^^

30.10.2011 21:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
roxas950
Legende
*****


Beiträge: 1.110
Gruppe: User
Registriert seit: Apr 2010

Status: Offline
Danke erhalten: 346
Beitrag: #17
RE: [WIP] Download Manager

echt genial wieder was von dir zu hören ich hoffe das wird was ich werde das plugin benutzen


[T.N.T] Sleeper
31.10.2011 12:45
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Mikedaburner09
News-Writer
*****


Beiträge: 1.816
Gruppe: User
Registriert seit: Jul 2011

Status: Offline
Danke erhalten: 608
Beitrag: #18
xPSP  RE: [WIP] Download Manager

Total_Noob :
Hey Leute,
Ich arbeite gerade an einem Projekt für die PSP. Wie ihr wisst ist der Download im Internet Browser ziemlich nervig. Nur 1 Download ist möglich und währendem könnt ihr nicht mal surfen...ziemlich nervig wenn man etwas Grosses runterlädt und 5 Minuten warten mussWink Deshalb hab ich ein Plugin geschrieben, welches 3 Downloads erlaubt (alle Downloads laufen mit der gleichen Kb/s) und die Downloads können im Hintergrund laufen. Da 3 Downloads mit der gleichen Geschwindligkeit laufen, könnte man theoretisch den Download in 3 Teilen zerlegen....wird es dann 3 Mal schneller downloaden?Wink Ich sagte theoretisch, weil ich den Download nicht seeken kann. Wenn jemand von euch reversen kann und Bock hat, der kann sceHttpReadData reversenSmile Ist diese Funktion reversed könnte die PSP 3 Mal schneller downloadenWink

Wenn ihr wollt könnte ich ein Video aufnehmen wo die Downloads im Hintergrund laufen...Wink

TN


Gibt es nicht schon so ein Plugin?? war doch letztens erst in den News...
ich hab das schon lange auf meiner PSP o.O

allerdings sind da noch ziemlich nervige Grafikbugs wenn man den manager öffnet -.-

31.10.2011 19:48
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Total_Noob
Developer
*


Beiträge: 496
Gruppe: Developer
Registriert seit: Dec 2009

Status: Offline
Danke erhalten: 2208
Beitrag: #19
RE: [WIP] Download Manager

Ioh, download manager, von mirWink stelle cpu auf 333 das wird das problem lösenWink

31.10.2011 19:50
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
_Kai_
be linux
**


Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 2809
Beitrag: #20
xPSP  RE: [WIP] Download Manager

wurzelbums :
Ob und wie viele Server das Verfahren unterstützen weiß ich nicht. Ein Versuch wär's auf jeden Fall wert.


RangeByte Header sind in der RFC 2616 festgelegt und Standard in HTTP/1.1. Der Header wird von allen gängigen, mir bekannten Webservern unterstützt.

Erst kürzlich gab es ein Apache Update, weil es durch Probleme beim parsen dieser Header möglich war, gezielt den kompletten memory auszulasten und somit den Webserver unerreichbar zu machen.


PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
31.10.2011 20:05
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
taipangr
Legende
*****


Beiträge: 1.444
Gruppe: User
Registriert seit: Jul 2011

Status: Offline
Danke erhalten: 397
Beitrag: #21
RE: [WIP] Download Manager

Bei mir funktioniert dieses Plugin perfekt Smile Danke Total Noob aber eine Frage habe ich noch^^
Total (Noob)? Wieso Noob Big Grin

Mfg

31.10.2011 20:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PATTA
Profi
****


Beiträge: 485
Gruppe: User
Registriert seit: Mar 2011

Status: Offline
Danke erhalten: 115
Beitrag: #22
xPSP  RE: [WIP] Download Manager

taipangr :
Bei mir funktioniert dieses Plugin perfekt Smile Danke Total Noob aber eine Frage habe ich noch^^
Total (Noob)? Wieso Noob Big Grin

Mfg


Nickname^^

Warum ist bei einer Ampel Grün unten? Cool


Nieder mit ACTA!!!
My PSP (anzeigen)
31.10.2011 21:19
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Flik
King
*


Beiträge: 4.557
Gruppe: User
Registriert seit: Jun 2009

Status: Offline
Danke erhalten: 1998
Beitrag: #23
xPSP  RE: [WIP] Download Manager

taipangr :
Danke Total Noob aber eine Frage habe ich noch^^
Total (Noob)? Wieso Noob Big Grin


Ein Grund könnte sein, weil als er in der PSP Scene angefangen hat ein Total Noob war und sich deshalb so genannt hat. Mit der Zeit hat er sehr sehr viel über die PSP ect. gelernt, aber den Namen hat er behalten.

Das ist eine Legende, wie er wirklich den Namen bekommen hat, weiß keiner.^^

31.10.2011 21:52
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #24
xPSP  RE: [WIP] Download Manager

PSP-Hilfe :

wurzelbums :
Ob und wie viele Server das Verfahren unterstützen weiß ich nicht. Ein Versuch wär's auf jeden Fall wert.


RangeByte Header sind in der RFC 2616 festgelegt und Standard in HTTP/1.1. Der Header wird von allen gängigen, mir bekannten Webservern unterstützt.


Aber nur, wenn das Request per POST gesendet wird, oder? Ich meine... Jedes GET-Request kann zu POST umgewandelt werden, das einzige, was sich dann ändert, ist, dass entsprechend die POST-Daten mitgesendet werden, die URL der GET-Anfrage bleibt ja gleich.

Also: Jedes sceHttpSendRequest muss gepatcht werden...

Code:
int sceHttpSendRequest_patched(int requestid, void * data, unsigned int datasize) {
    char* new_data;
    if (data != NULL) sprintf(new_data, "%sRange: bytes=%d-%d\n", data, range_start, range_end);
    else sprintf(new_data, "Range: bytes=%d-%d\n", range_start, range_end);
    return sceHttpSendRequest_real(requestid, new_data, strlen(new_data));
}


Vielleicht bin ich bei dem ganzen Java-Krams, den ich zur Zeit mache, etwas aus der Übung gekommen...

Der einzige Nachteil bei dem Ganzen ist, dass Du die Datei erstmal anfragen musst. Und zwar, bis Du die sceHttpGetContentLength-Methode aufrufen kannst. Da kannst Du dann die Länge der Datei in beliebig viele Parts splitten und diese dann in je einem eigenen Thread laufen lassen.

Ich weiß nicht, ob man dann via sceIoOpenAsync und sceIoWriteAsync verteilt über mehrere Threads in eine Datei schreiben kann. Man müsste ja immer bis zum Start zurück gehen und von dort wieder den absoluten Wert vorwärts-seeken, bis man an der Stelle ist, an der man dann endlich schreiben darf.

Wie gesagt, ich verurteile erstmal keine Ideen Wink


Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2011 23:28 von vista200.

31.10.2011 23:27
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
_Kai_
be linux
**


Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 2809
Beitrag: #25
xPSP  RE: [WIP] Download Manager

wurzelbums :

PSP-Hilfe :

wurzelbums :
Ob und wie viele Server das Verfahren unterstützen weiß ich nicht. Ein Versuch wär's auf jeden Fall wert.


RangeByte Header sind in der RFC 2616 festgelegt und Standard in HTTP/1.1. Der Header wird von allen gängigen, mir bekannten Webservern unterstützt.


Aber nur, wenn das Request per POST gesendet wird, oder? Ich meine... Jedes GET-Request kann zu POST umgewandelt werden, das einzige, was sich dann ändert, ist, dass entsprechend die POST-Daten mitgesendet werden, die URL der GET-Anfrage bleibt ja gleich.


Bei einem GET Request können benötigte Parameter nur über die URI übergeben werden, je nach Einsatzgebiet gibt es also gute Gründe, sie per POST zu übertragen.

- Die Länge der URI ist in einigen Clients beschränkt, im IE z.b. 2048 Bytes.
- Bei einer GET Anfrage landen die übergebenen Parameter meistens in den Logs.
- Je nach Einsatzgebiet werden bei der Übertragung per GET CSRF Attacken möglich, wenn keine Prüfsumme zum Abgleich mit übertragen wird.
- Einige weitere die mir spontan nicht einfallen.

Bei einem POST Request hingegen können zusätzlich zur URI auch noch weitere Daten beliebiger Länge mit übertragen werden.

Hier ein kleines Beispiel zu einem einfachen GET Request in PHP:

PHP-Code:
<?php

$fp 
fsockopen("127.0.0.1"80$errno$errstr30);

$header  "GET /var=test&amp;var2=test2 HTTP/1.1\r\n";
$header .= "Host: 127.0.0.1\r\n";
$header .= "Connection: Close\r\n";

fputs($fp$header);

// Antwort abfragen
// ...

?>


Und hier ein Beispiel zur Übertragung einer Datei per POST:

PHP-Code:
<?php

$boundary 
substr(md5(mt_rand()), 0,16);

$fp fsockopen("127.0.0.1"80$errno$errstr30);

$header  "POST /uri HTTP/1.1\r\n";
$header .= "Host: 127.0.0.1\r\n";
$header .= "Content-type: multipart/form-data; boundary=$boundary\r\n";
$header .= "Connection: Close\r\n";

// Zu übertragende Daten
$content .= "--".$boundary."\r\n";
$content .= "Content-Disposition: form-data; name=\"fileupload\"; filename=\"image.gif\"\r\n";
$content .= "Content-Type: image/gif\r\n\r\n";
$content .= file_get_contents("image.gif")."\n\r\n";
$content .= "--".$boundary."--\r\n";

$header .= "Content-length: "strlen($content) ."\r\n\r\n";

fputs($fp$header);
fputs($fp$content);

?>


Und um auf deine Frage zurück zu kommen, Range:bytes kann natürlich auch bei GET oder HEAD abfragen verwendet werden.


PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
01.11.2011 00:49
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #26
xPSP  RE: [WIP] Download Manager

PSP-Hilfe :
Und um auf deine Frage zurück zu kommen, Range:bytes kann natürlich auch bei GET oder HEAD abfragen verwendet werden.


Aber dieser Parameter würde bei GET-Requests nicht in der URI, sondern im Request-Header angegeben werden. Und implementierungstechnisch ist es so, dass die sceHttp-Library Daten, die nicht zur URL gehören, aber trotzdem übertragen werden sollen, in diesem POST-Char-Array untergebracht werden. Und damit bliebe quasi nur noch die Möglichkeit, wie ich oben ja in meinem Beispiel gepostet habe, das Request zu einem POST-Request zu machen, diese Range-Anweisung einzubauen und dieses POST-Request dann an den Server zu senden. Eine andere Möglichkeit fällt mir nicht ein.

Kannst Du mit Wireshark oder so mal einen HTTP-Header mit Range-Anweisung aufzeichnen und zur Verfügung stellen? Dann kann man mit der sceHttp-Bibliothek spielen und schauen, ob man auf das selbe Ergebnis kommt oder ob man sich mit Sockets eine eigene Bibliothek programmieren muss. Das wäre großartig! Smile


01.11.2011 23:23
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
_Kai_
be linux
**


Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009

Status: Abwesend
Danke erhalten: 2809
Beitrag: #27
xPSP  RE: [WIP] Download Manager

wurzelbums :
Aber dieser Parameter würde bei GET-Requests nicht in der URI, sondern im Request-Header angegeben werden. Und implementierungstechnisch ist es so, dass die sceHttp-Library Daten, die nicht zur URL gehören, aber trotzdem übertragen werden sollen, in diesem POST-Char-Array untergebracht werden. Und damit bliebe quasi nur noch die Möglichkeit, wie ich oben ja in meinem Beispiel gepostet habe, das Request zu einem POST-Request zu machen, diese Range-Anweisung einzubauen und dieses POST-Request dann an den Server zu senden. Eine andere Möglichkeit fällt mir nicht ein.


Mit den Libs der PSP kenne ich mich nicht aus aber ein POST Request wäre hier nur von nöten, wenn das angeforderte Dokument vom Server anhand den im POST enthaltenen Daten dynmisch erzeugt werden würde, was ja wahrscheinlich so gut wie nie der Fall ist.

Wenn du einen abgebrochenen Download ab einer bestimmten Stelle fortsetzen willst reicht folgender Request völlig aus:

GET /downloads/datei.zip HTTP/1.1
Host: bla.de
Range: bytes=10000-

Der Server antwortet mit dem Statuscode 206 (Partial Content) und liefert die angeforderte Datei ab dem 10000. Byte aus.

Den Header in deinem POST Char Array unterzubringen wäre Schwachsinn. Sende einen normalen GET Request in dieser Form.

wurzelbums :
Kannst Du mit Wireshark oder so..


Für sowas kann ich dir das Firefox Plugin "Live HTTP headers" empfehlen.


PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN

Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2011 17:21 von _Kai_.

02.11.2011 14:29
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
vista200 (Nov-2-2011)
vista200
Head of Awesomeness
***


Beiträge: 189
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 139
Beitrag: #28
RE: [WIP] Download Manager

Ich habe mal ein bisschen experimentiert... Und wie es scheint, müsste man doch mit Sockets was eigenes schreiben, weil die Methoden der sceHttp-Library die Ranges nicht übertragen kann.

Die GET-URI kann man übertragen, das ist kein Problem, aber Ranges werden nicht gesendet.
Die "POST-URI" kann man übertragen, die übertragenen Daten im POST-Request-Body auch, aber die abverlangten Modifier nach "Host:" lassen sich nicht senden.

Total_Noob hat die Methoden ja gepatcht, ob er die reversed hat weiß ich gerade nicht. Wenn ja, dann kann man darauf aufbauend ja mit Sockets arbeiten.

Erstmal schauen, was Quelle hat Wink


02.11.2011 20:46
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Seiten (2): « Erste < Vorherige 1 [2] Letzte »
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Graphic.h und png.h download PSP HACKER 1001 3 2.404 04.12.2012 18:34
Letzter Beitrag: PSP HACKER 1001
xPSP [Source Code] Download Manager Total_Noob 11 5.940 14.07.2012 17:40
Letzter Beitrag: KingRanger
xPSP [DOWNLOAD] LUA Player Plus r142 vom 26.JUL 2011 Tim2001 0 1.498 01.11.2011 17:42
Letzter Beitrag: Tim2001
xPSP Lua - Download starten notepass 1 1.865 14.09.2011 21:54
Letzter Beitrag: lua4dev
xPSP pspsdk ~> Libs download ~ferra~ 5 1.941 08.06.2011 13:54
Letzter Beitrag: ~ferra~

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang