• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

C++ .txt Datei aus dem Internet öffnen

DeletedUser86497

Gast
Hallo, ich möchte eine .txt Datei die auf meinem Server liegt öffnen. Wie geht das. Das ganze soll nur eine Konsolenanwendung sein.
 

DeletedUser

Gast
Mit Standard-C++ geht das gar nicht. C++ kennt von Haus aus keine Sockets. Die kommen frühestens mit dem TR2. Wenn du uns dein Betriebssystem nennst, kann man dir weiterhelfen.
 

DeletedUser86497

Gast
Ich habe Windows Vista, es sollte aber auch auf Windows XP funktionieren, eigentlich sogar hauptsächlich. Windows 7 wäre auch gut, aber nicht zwingend notwendig.
 

DeletedUser86497

Gast
Huch das ist kompliziert. So weit bin ich noch nicht mit C++ fortgeschritten, wusste nicht, dass das so kompliziert ist. Kannst du mir beim Anpassen helfen?

Edit: Ich möchte, dass eine Textdatei geöffnet wird, und dann der Inhalt überwacht wird. Mit PHP möchte ich dann da was reinschreiben, und C++ soll dann Aktionen dafür ausführen.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser61508

Gast
Huch das ist kompliziert. So weit bin ich noch nicht mit C++ fortgeschritten, wusste nicht, dass das so kompliziert ist. Kannst du mir beim Anpassen helfen?

Edit: Ich möchte, dass eine Textdatei geöffnet wird, und dann der Inhalt überwacht wird. Mit PHP möchte ich dann da was reinschreiben, und C++ soll dann Aktionen dafür ausführen.

Ich würde grundsätzlich sagen, dass es für solche jede Sprache für einen Anfänger besser geeignet ist als C++...außer vllt. C ;-)

Von der Geschichte mit dem File offenhalten würde ich dir abraten. Dafür gibts die Möglichkeit, die letzte Änderung der Datei vom Server zu erfahren. So kannst du die Datei einlesen wenn sie neuer ist als dein letzter, gespeicherter Wert.
 

DeletedUser86497

Gast
Ich möchte dass die Anwendung startet und wenn ich dann auf einem anderen Befehl übers Internet z.B. die Addresse "www.mein-server.de/index.php?action=shutdown" aufrufe dann ein Befehl in eine txt geschrieben wird, und dann das C++ Programm den PC herunterfährt.

P.S.: Ich bin kein Anfänger, ich habe mich nur noch nicht genug in C++ eingelesen, und ich bestehe darauf es zu lernen, weil mir die Syntax sehr sympathisch ist, und man sie überall anwenden kann :)
 

DeletedUser

Gast
Wenn du diesen Code benutzt: http://np.gfx-dose.de/1925/na/ wird die Anwendung eigentlich ganz einfach:
Code:
int main()
{
    DownloadToFile("http://some.server.de/datei.txt", "datei.txt"); // Lädt die Datei datei.txt von http://some.server.de und speichert sie als datei.txt
}
Die Parameter kannst du auch vom User einlesen lassen, wie du's grad brauchst. Wenn du die Datei selbst noch weiterverarbeiten willst kannst du sie auch wie eine normale Datei nach dem Download mit 'nem std::fstream einlesen.. usw, usf.

Grad gesehen, dass Torridity auch schon was geschrieben hat: Er hat eigentlich Recht. Um eine Datei zu "überwachen" ist der Ansatz hier auch ein völlig falscher. Ich kann dir da auch nicht weiterhelfen, sockets sind nich so mein Ding.
 

Hölzi22

Gast
also ich kann eine .txt bei mir einfach in ein konsolenprogramm umbennen.

ich weiß nicht vllt tut es bei dir ja auch! :D
schau einfach mal was die endung der dateien deiner konsole ist und bennen die copy der datei danach um.
 

DeletedUser86497

Gast
Zuerst Lesen (Dann denken) dann Posten....
Das hab ich gar nicht vor!:evil:
 

DeletedUser

Gast
Ich hab vor langer Zeit mal ein simples Proxy-Test-Tool geschrieben, was einfach eine txt-Datei per HTTP runterlädt.

Dazu hab ich WinSock genutzt, was auch recht simpel war. Sockets braucht man dazu nicht (zumindest nicht bewusst).

So ungefähr sieht das dann aus (gekürzte Form aus meinem Programm mit Proxy):
Code:
	HINTERNET hNet, hNetFile;
	hNet = InternetOpen("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", INTERNET_OPEN_TYPE_PROXY, host, "<local>", 0);
	if(hNet == NULL)
	{
		return NULL;
	}
	hNetFile = InternetOpenUrl(hNet, "http://osor.de/check.txt", NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_AUTH, NULL);
	if(hNetFile == NULL)
	{
		return NULL;
	}
	char buf[8];
	memset(buf, 0, sizeof(buf));
	DWORD numread;
	if(InternetReadFile(hNetFile, &buf, 8, &numread) == FALSE)
	{
		return NULL;
	}

	InternetCloseHandle(hNet);

Am besten mal hier vorbeischaun:
Using WinINet
 

DeletedUser86497

Gast
Er nimmt das Wort "host" nicht. Habe ich vllt einen Header vergessen? Habe "WinInet.h" included und natürlich "Windows.h" und "TCHAR.h".
 

DeletedUser

Gast
Das ist ja auch nur ein Ausschnitt aus meinem Code. Der wird bei einfachem copy&paste nicht funktionieren. Es geht mir nur darum dir zu zeigen, wie es grundsätzlich geht.
Um selber zu programmieren, sollte man auch verstehen, was man macht. Dazu ist der Link am Ende meies Beitrags zu der Doku.

host ist eine Variable in der ich den Proxy-Server übergebe. Du brauchst das nicht, wenn du keinen Proxy nutzen willst.
Hier nachzulesen:
http://msdn.microsoft.com/en-us/library/aa385096(VS.85).aspx
 

DeletedUser86497

Gast
Wenn mir jetzt noch jemand zeigt wie man es am geschicktesten anstellt dass die Datei alle 30 Sekunden runtergeladen wird bin ich glücklich :)
 

DeletedUser86497

Gast
Ich bekomme Fehlermeldungen:

c:\dokumente und einstellungen\*****\eigene dateien\visual studio 2008\projects\pc_runterfahren\pc_runterfahren\pc_runterfahren.cpp(15) : error C2664: 'InternetOpenW': Konvertierung des Parameters 1 von 'const char [95]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\dokumente und einstellungen\*****\eigene dateien\visual studio 2008\projects\pc_runterfahren\pc_runterfahren\pc_runterfahren.cpp(17) : error C2664: 'InternetOpenUrlW': Konvertierung des Parameters 2 von 'const char [39]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
 
Zuletzt bearbeitet von einem Moderator:
Oben