Kann keine Datei aus dem Internet einlesen

Hi WWW-Mitglieder,

ich habe ein Problem in C++ (was sonst):
Ich möchte .txt-Dateien aus dem Internet einlesen. Das hörte sich für mich am Anfang einfach an, aber irgendwie will das ganze nicht funktionieren…
Schaut euch einfach mal folgenden Codeausschnitt an:

char Text[200];
ifstream Input1 („http://www.adresse.de/datei.txt“, ios::binary);
Input1 >> Text;

Was mache ich falsch? Mit lokalen Dateien auf meinem PC funktioniert alles…
Ich hoffe ihr könnt mir weiterhelfen.

Mit freundlichen Grüßen
Shahri

hmm
Also ich als Server frag mich als erstes, welches Protocoll spricht den der ifstream ?
Denn immerhin muss ja über Netzwerk zu einen anderen Netzwerk eine verbindung aufgebaut werden. Dazu braucht es ein Protokoll und vielleicht eine Authorisation.

Datei Befehle auf dem LokalNet sind also nicht gleich
Datei Befehle Internet :smile:

Somit würd ich erstmal schauen ob du nicht ein handle bzw object brauchst was eine z.b. http connection aufbaut , daten empfängt und wieder abbaut (fals nötig) :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Da das Thema umfangreicher ist :smile:

Der Link zum Problem http://www.zotteljedi.de/doc/socket-tipps/index.html

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also das bin jetzt wieder ich (Verfasser des Threads), hab mich nur umbenannt… (Dingens->Shahri)
Danke für die Antworten erstmal. Ok, das wird doch komplizierter als ich gedacht habe… Muss ich wirklich das ganze Zeugs mit den Sockets und so machen? (Die Antwort ist 100%ig sowieso „ja!“ ^^)
Ich würde jetzt am liebsten ein schlimmes Wort sagen, aber dann krieg ich nachher noch eine Forumsperre.
Naja, nochmals Danke, ich werd mich hier melden, wenn ich irgendwelche Probleme mit den Sockets hab (und die hab ich mit Sicherheit…).

MfG
Shahri

wenn du die MFC benutzt wirds vielleicht einfacher :smile:
Aber dazu müsstest du schon sagen , was du wie tust, Compiler z.b. etc

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hmm, ich denke MFC ist eher nichts für mich, ich will das Programm (größtenteils) selbst programmieren. Und ihr seid sicher, dass nicht irgendjemand noch zufällig einen Beispielcode für mein Problem übrig hat (wie gesagt, „größtenteils“, nicht vollständig^^)? Sagt nicht, ich hätte nichts selbst gemacht, ich habe jetzt bereits 170 Zeilen programmiert (leere Zeilen weggelassen, also 170 Zeilen reinen Code).

mFG
Shahri

Mit MFC Datei aus dem Internet einlesen

Hi WWW-Mitglieder,

ich habe ein Problem in C++ (was sonst):
Ich möchte .txt-Dateien aus dem Internet einlesen. Das hörte
sich für mich am Anfang einfach an, aber irgendwie will das
ganze nicht funktionieren…
Schaut euch einfach mal folgenden Codeausschnitt an:

char Text[200];
ifstream Input1 („http://www.adresse.de/datei.txt“,
ios::binary);
Input1 >> Text;

Für die MFC gibts es in der MSDN

Herstellen einer Verbindung
Erstellen Sie eine „CInternetSession“, um die Basis für eine Internetclientanwendung einzurichten.

Öffnen eines URLs
Stellen Sie eine Verbindung her.
Rufen Sie „CInternetSession::open_mouth:penURL“ auf.
Die OpenURL-Funktion gibt ein schreibgeschütztes Ressourcenobjekt zurück.

Lesen von URL-Daten
Öffnen Sie den URL.
Rufen Sie „CInternetFile::Read“ auf.

ein Beispiel gibts dazu auch
Visual C+±Beispiele für MFC
TEAR-Beispiel: Abrufen von HTML-Seiten aus dem Internet

Hmm, ich denke MFC ist eher nichts für mich, ich will das
Programm (größtenteils) selbst programmieren.

Dann schonmal viel Spass. Was du willst läuft auf einen mehr oder weniger vollständigen HTTP-Stack raus, wäre also nur die x+1te Neuentdeckung des Rads. Da ist es schon besser, eine Bibliothek zu verwenden, die das alles schon kann. Qt bietet beispielsweise einen kompletten I/O-Wrapper an, mit dem man dann halbwegs transparent auf so ziemlich alles zugreifen kann, was irgendwo am Netz hängt.

Sorry, ich hab überhaupt keine Ahnung von MFC, damit kann man doch Anwendungen mithilfe eines Assistenten erstellen, oder? Aber die Anwendung an sich habe ich ja schon, ich brauche nur noch irgendetwas, womit ich Daten aus einer .txt-Datei im Internet auslesen kann. Gibt es da nicht irgendwo einen Beispielcode für, bei dem ich nur noch ein paar Einzelheiten ändern muss? In der MSDN hab ich schon gesucht, aber ich bin auch nicht gerade der Suchprofi des Jahrtausends…

mfG
Shahri

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Qt bietet

beispielsweise einen kompletten I/O-Wrapper an, mit dem man
dann halbwegs transparent auf so ziemlich alles zugreifen
kann, was irgendwo am Netz hängt.

Hab mich mal über QT informiert, dass klingt eigentlich gut, aber die aktuelle Version ist 33Mb groß, was ich mit meinem 56k-Modem (ja, ich hab immer noch so ein Ding…) wohl voll vergessen kann… Wie ist das, sind da so einzelne Quellcodedateien drin? Falls ja, kann mir jemand die Datei die ich benötige per Mail schicken?

mfG
Shahri

Kurzer Quicki :

Programme -> Start - > Visual C++
Neues Projekt -> MFC-Anwendung -> SDI,Basisklasse CHtmlEditView

nun in der Klassenansicht doppelt auf die Funktion OnNewDocument der vom Assitenten anglegten Doc Klasse.

und dort dann z.b.

_BOOL CTestViewHTMLEDItDoc::open\_mouth:nNewDocument()  
{  
 if (!CHtmlEditDoc::open\_mouth:nNewDocument())  
 return FALSE;  
  
 // TODO: Hier Code zur Reinitialisierung einfügen  
 // (SDI-Dokumente verwenden dieses Dokument)_ OpenURL("http://www.legioneuropa.de/index.html");  
  
 _return TRUE;  
}_  

Das Beispiel Zeigt eine Webseite in einem Fenster :smile:

Die wohl einfachste Art eine Webseite zu Laden mittels MFC Assistent :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Kurzer Quicki :

Programme -> Start - > Visual C++
Neues Projekt -> MFC-Anwendung -> SDI,Basisklasse
CHtmlEditView

nun in der Klassenansicht doppelt auf die Funktion
OnNewDocument der vom Assitenten anglegten Doc Klasse.

und dort dann z.b.

_BOOL CTestViewHTMLEDItDoc::open_mouth:nNewDocument()
{
if (!CHtmlEditDoc::open_mouth:nNewDocument())
return FALSE;

// TODO: Hier Code zur Reinitialisierung einfügen
// (SDI-Dokumente verwenden dieses Dokument)_ OpenURL(„http://www.legioneuropa.de/index.html“);

return TRUE;
}

Das Beispiel Zeigt eine Webseite in einem Fenster :smile:

Die wohl einfachste Art eine Webseite zu Laden mittels MFC
Assistent :smile:

Sorry wenn das bisschen schlecht rüberkam, aber ich will die TXT-Datei ja nicht anzeigen, sondern deren Inhalt dieser in einer Variable speichern.

MfG
Shahri

Sorry , ne copy and past methode wirds da nicht geben fürchte ich :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Sorry , ne copy and past methode wirds da nicht geben fürchte
ich :smile:

Schade…

Sorry , ne copy and past methode wirds da nicht geben fürchte
ich :smile:

Schade…

Thema MFC Nachtrag

Einfacher WebseitenLoad ASCII ohne Fehlerbearbeitung wäre

#include 
#include 
#include 

 CInternetSession myISession;
 CHttpFile\* pFile = NULL; 
 pFile = (CHttpFile\*) myISession.OpenURL("http://www.gnu.org/licenses/fdl.txt",1,INTERNET\_FLAG\_TRANSFER\_ASCII,NULL,0);
 TCHAR sz[1024]; 
 while (pFile-\>ReadString(sz, 1023)) 
 { 
 TRACE("Zeile :%s\n",sz);
 } 

Datei txt wird gelesen und steht in sz Zeilenweise zur Verfügung :smile: