PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Websites in C spiegeln



avuton
24-08-2003, 17:02
Hi,
hat einer ne Ahnung, wie man in C eine Website spiegelt?
Quasi eine abgespeckte wget Implementierung.
Danke
avuton

anda_skoa
24-08-2003, 17:22
Viel abgespeckter wird das sicher nicht, wenn man es selber macht.

Dürfte auch ein Haufenarbeit sein, weil man jedes Dokument parsen muss, alle relativen URLs umsetzen muss, etc.

Ciao,
_

avuton
25-08-2003, 09:22
es geht mir darum, ich will ein windowmaker applet schreiben, was news z.b. von heise darstellt, aber dazu muss das programm sich die news ja erstmal saugen und das ist das problem.
weiß einer ne andere möglichkeit?

Lin728
25-08-2003, 10:29
Also ich kann das jetzt nur aus meiner Java/QT/Kylix erfahrung heraus sagen, und soweit ich weiß, besitzen die HTML-Komponenten dieser Umgebungen bereits eine HTTP implementierung, mit der sie dynamisch, sobald eine http-url übergeben wird, sich das automatisch herunterladen.

Außerdem:
Soweit ich das verstanden habe, willst du nur einfach eine fixe URL herunterladen.
Ich habe sowas man in Java gemacht - hier ist der source - vieleicht kannst du damit ja was anfangen, dieses Beispiel ist aus Javabuch (3):



001 /* Listing4504.java */
002
003 import java.net.*;
004 import java.io.*;
005
006 public class Listing4504
007 {
008 public static void main(String[] args)
009 {
010 if (args.length != 2) {
011 System.err.println(
012 "Usage: java Listing4504 <host> <file>"
013 );
014 System.exit(1);
015 }
016 try {
017 Socket sock = new Socket(args[0], 80); //Socket mit dem übergeben host auf port 80 aufbauen
018 OutputStream out = sock.getOutputStream();
019 InputStream in = sock.getInputStream();
020 //GET-Kommando senden
021 String s = "GET " + args[1] + " HTTP/1.0" + "\r\n\r\n";
022 out.write(s.getBytes());
023 //Ausgabe lesen und anzeigen
024 int len;
025 byte[] b = new byte[100];
026 while ((len = in.read(b)) != -1) {
027 System.out.write(b, 0, len);
028 }
029 //Programm beenden
030 in.close();
031 out.close();
032 sock.close();
033 } catch (IOException e) {
034 System.err.println(e.toString());
035 System.exit(1);
036 }
037 }
038 }


Hoffe das hilft. Anstatt des System.out.write(b, 0, len) könntest du z.B. einen BurredWriter hernehmen und das ganze in ein File schreiben.

Mfg

anda_skoa
25-08-2003, 10:59
Original geschrieben von avuton
es geht mir darum, ich will ein windowmaker applet schreiben, was news z.b. von heise darstellt, aber dazu muss das programm sich die news ja erstmal saugen und das ist das problem.
weiß einer ne andere möglichkeit?

Nun, der Newsheadlines sind ja als RDF in einer Datei verfügbar, also wenn du eine Art Newsticker schreiben willst, wäre das die vernünftigste Quelle.

Eine Datei zu transferieren ist nicht so schwer wenn man es selber machen müsste, aber man kann da ja auf Libs wie libcurl http://curl.haxx.se/libcurl/ zurückgreifen.

Ciao,
_