Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

1

18.10.2007, 13:24

Auch eine seeeehr kleine Frage zu winsock

Hey ich hab folgendes :

C-/C++-Quelltext

1
2
3
4
5
HINTERNET hRemoteFile = InternetOpenUrl(hInet, _T("http://toa-bVERFREMDET!!!t.de/repack.exe"), NULL, 0, INTERNET_FLAG_RELOAD, NULL);
        if(hRemoteFile != NULL)
        {
            // die lokale Datei erzeugen, in die wir schreiben werden

            HANDLE hLocalFile = CreateFile(_T("C:\\repack.exe"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);


jetzt möchte ich das ganze in eine Extra funktion packen zb download_file,
dieser Funktion möchte ich den link und den Zielort übergeben.

C-/C++-Quelltext

1
2
3
Download_file(Wie müssen die parameter aussehen)
{
}


Und wie muss ich dann die angaben in der richtigen datei verändern, übe noch nicht lange mit winsock pls help [/cpp]


EDIT :

Bzw wisst ihr wie ich den Link und den Zielort aus einer Txt lesen lassen kann und eintragen ? wie stell ich das am besten mit fstream an

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

18.10.2007, 13:39

Hat mit winsock wenig zu tun.

Versuch mal folgendes:
1. HINTERNET Handle per InternetOpenUrl holen
2. Datei per in den Buffer laden per InternetReadFile
3. Buffer in eine Datei schreiben (z.b. mit fstream)

Im Prinzip braucht deine Funktion nur den Dateinamen und die URL.
Wegen dem Dateieinlesen kannst du dir z.B. INI oder XML APIs anschauen oder per einfachen Parser machen. Die Datei könnte z.B. so aussehen

Dateiname2.dat; http://www.webaddy.de/Dateiblub2
Dateiname1.dat; http://www.webaddy.de/Dateiblub

oder du speicherst nur die URL und holst die den Dateinamen über den letzten Teil des Strings. Im Beispiel oben wäre das Dateiblub.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

3

18.10.2007, 13:59

Boahr das hört sich sau kompliziert an , hat schon lange gedauert bis das mit dem download über winsock komplett geklappt hat das ist ja fertig eigentlich möchte ich das jetzt nur noch irgendwie erweitern das der Link aus einer Config file gelesen wird

Also ich meine das hier

C-/C++-Quelltext

1
_T("http://toa-VERFREMDETepack.exe")



Mh.. sowas in der Art

C-/C++-Quelltext

1
2
3
LPCTSTR httpFile

HINTERNET hRemoteFile = InternetOpenUrl(hInet, httpFile, NULL, 0, INTERNET_FLAG_RELOAD, 0);

jetzt das httpFile aus einer Config auslesen lassen wie macht man das ?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

18.10.2007, 15:58

fstream?
getline?
ist eigentlich einer der Sachen die man ganz am Anfang schonmal gemacht haben sollte ;)

Warum sprichst du eigentlich dauernd von winsock? Die Funktionen haben mit winsock doch eigentlich nichts zu tun? Oder holst du dir die Dateien irgendwie anders?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

5

18.10.2007, 16:01

löl irgendwie steht ich auf der Leitung^^

das hier sieht nach Murks aus^^

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int length;
 char * buffer;
LPCTSTR httpFile;

  ifstream is;
  is.open ("test.txt", ios::binary );


  is.seekg (0, ios::end);
  length = is.tellg();
  is.seekg (0, ios::beg);

 
  buffer = new char [length];

  
  is.read (buffer,length);

  httpFile=buffer;

    HINTERNET hInet = InternetOpen(_T("MyAppName"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    if(hInet != NULL)
    {
       
          HINTERNET hRemoteFile = InternetOpenUrl(hInet, httpFile, NULL, 0, INTERNET_FLAG_RELOAD, 0);


Murks ? xD

6

18.10.2007, 16:23

Schau mal in der Referenz nach wie es wirklich heißt aber anstelle von

C-/C++-Quelltext

1
ios::binary

kannst du auch

C-/C++-Quelltext

1
ios::text

nehmen

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

18.10.2007, 16:25

japp. Hast du das schonmal debuggt? :lol:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
ifstream is;
is.open ("test.txt");

while(!eof(is)
{
char buffer[200];
is.getline(buffer, 200);
[...]
}


Aber keine garantie, dass das so funktioniert. bin da ein wenig eingerostet in der Hinsicht *hust* :roll:
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

8

18.10.2007, 16:26

Du ließt den kompletten Dateiinhalt aus :P

C-/C++-Quelltext

1
2
3
4
std::ifstream file_stream("config.dat");
if (!file_stream) return false;
std::string line;
while (std::getline(file_stream, line)) std::cout << line << std::endl;
... Zeile für Zeile auslesen und dann direkt ausgeben ...
@Nox: nja eof sollte man als Abbruchsbedingung möglichst vermeiden ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

18.10.2007, 16:32

Tja gut. Wusste nicht dass der bool operator in der Art überladen ist. Habe nur gesehen, dass getline eine Referenz auf den stream zurück gibt. Ist wie gesagt ne Weile her...
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

10

18.10.2007, 16:33

Und wie mach ich es das ich sage LPCTSTR httpFile soll line enthalten ?

Werbeanzeige