Datei runterladen

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
Replay
Foriker
Beiträge: 5
Registriert: Di 17. Okt 2006, 03:34
Kontaktdaten:

Datei runterladen

Beitrag von Replay » Di 17. Okt 2006, 03:40

Hallo erstmal. Da ich hier neu bin möchte ich mich euch mal kurz vorstellen.
Nachdem ich jetzt nach Jahren des Parallelbetriebs endgültig auf Linux umgestiegen bin, musste ich zwangsweise auch die Programmiersprache ändern. Da ich 1.) zu Windows Zeiten QBasic, Profan, später Visual Basic programmiert haben und 2.) zu faul bin jetz C zu lernen, habe ich Gambas für mich entdeckt. Und auf der Suche nach Hilfe hab ich dann dieses schöne Board hier entdeckt...

Und nu zu meinem Problem:

Ich möchte eine Art Downloadmanager schreiben. Nur das Prolem ist das ich nicht weiss wie ich per Gambas Dateien aus dem Internet herunterladen kann. Und vBasic war es per Socket noch relativ einfach, aber hier hänge ich jetzt komplett.

Momentan habe ich das Problem per Shell, Konsole und wget gelöst, aber das is nicht das gelbe vom Ei.

Würde mich sehr freuen wenn mir jemand von euch helfen könnte oder vllt. einen Link zu einem Beispielcode hätte. Ich komme nämlich jetzt garnicht mehr weiter. Danke schonmal

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Beitrag von roemi » Di 17. Okt 2006, 13:13

Moin und Willkommen Replay!

Hast Du schonmal auf die Linksammlung gewechsel und dort die Beispiele durchstöbert?
Zudem haben wir hier auch einen kleinen Downloadbereich.

Evtl. ist da was dabei :wink:
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Replay
Foriker
Beiträge: 5
Registriert: Di 17. Okt 2006, 03:34
Kontaktdaten:

Beitrag von Replay » Di 17. Okt 2006, 16:22

OK, hab jetz alle Links und Downloadmöglichkeiten durch. Hab jetzt zwar mein Gambas geupdatet ;), aber leider immer noch keine Lösung für mein Problem gefunden. Noch ne andere Idee?

nibbana
Foriker
Beiträge: 143
Registriert: Fr 16. Dez 2005, 21:32
Kontaktdaten:

Beitrag von nibbana » Do 19. Okt 2006, 14:56

Am einfachsten gehts mit der Klasse HttpClient (Komponente gb.net.curl)

Code: Alles auswählen

client = NEW HttpClient
client.url = "http://localhost:8085" ' gesuchte Addresse
client.get("/tmp/test.html") ' Seite laden und als "/tmp/test.html" abspeichern
Wenn du Socket benutzen willst mußt du dann das gesamte Protocol selbst schreiben (Komponente gb.net)

Code: Alles auswählen

ReadHTMLSite("www.gambas-club.de", "/")

PUBLIC SUB ReadHTMLSite(host AS String, OPTIONAL site AS String = "/", OPTIONAL port AS Integer = 80)

  DIM sock AS Socket
  DIM s, result AS String
  
  ' socket anlegen
  sock = NEW Socket
  
  ' socket öffnen für direkte verbindung ins internet
  'sock.Connect(host, port)  
  
  ' oder über einen proxy auf port 8095
  sock.Connect("localhost", 8095)
  
  ' auf verbindung warten
  DO WHILE (sock.Status <> 7) AND (sock.Status > 0)
    WAIT 0.1
  LOOP

  IF sock.Status <> 7 THEN
    Error.Raise("kann verbidung nich herstellen")
  ENDIF

  ' minimalen http-header senden
  IF port = 80 THEN
    s = Subst("GET http://&1&2 HTTP/1.0\r\n", host, site)
  ELSE 
    s = Subst("GET http://&1:&2&3 HTTP/1.0\r\n", host, port, site)
  ENDIF
  WRITE #sock, s, Len(s)
  s = Subst("Host: &1\r\n", host)
  WRITE #sock, s, Len(s)
  s = "User-Agent: Gambas not VB\r\n" ' ;-)
  WRITE #sock, s, Len(s)
  s = "\r\n"
  WRITE #sock, s, Len(s)
  
  ' auf antwort warten
  DO WHILE Eof(sock) <> FALSE
    WAIT 0.1
  LOOP
  
  ' http-header lesen
  REPEAT 
    LINE INPUT #sock, result
    PRINT "Header -> "; result
  UNTIL Len(result) = 0
  
  ' html-document lesen
  READ #sock, result, Lof(sock)
  
  CLOSE #sock

  PRINT "********** Document **********"
  PRINT result  
END
mfg. nibbana
"Ich denke, also bin ich." (Descartes)

"Ich denke nicht, also was?" (Zen Meister Seung Sahn)

Replay
Foriker
Beiträge: 5
Registriert: Di 17. Okt 2006, 03:34
Kontaktdaten:

Beitrag von Replay » Di 24. Okt 2006, 01:59

Klasse..Ich danke Dir vielmals. Hat zwar leider nicht funktioniert, aber ist für ein anderes Projekt genau das was ich gesucht habe ;).

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste