Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi,

ich möchte mit fopen eine Datei auf einem Server aus unserem Netzwerk öffnen.

Wenn ich den Netzwerkpfad angebe, also z.B. \\Rechner1\datei.txt, dann klappt es.

Aber wenn ich den Internetpfad angeben, z.B. http://Server/datei.txt, dann findet er

die Datei nicht.

Wie kann ich das über den Internetpfad machen?

Oder geht das mit fopen nicht?

Gruß

Guybrush

Kann auch nicht gehen. Keine normale Datei-API "spricht" HTTP. Obwohl Explorer/IE das so darstellen, als ob da kein wirklicher Unterschied bestünde, steckt ein ganz anderes Protokoll dahinter.

Wenn Du eine Datei über das HTTP-Protokoll laden willst, musst Du eine HTTP-Abfrage absetzen. Das geht entweder mit Sockets von Hand oder über eine der diversen HTTP-Wrapper-APIs.

Originally posted by Guybrush Threepwood

Achso, wenn ich das über Sockets machen will muß ich dann einen eigenen Server

schreiben oder gibt es da schon was mit dem ich die Verbindung aufbauen kann?

Nein, du musst "nur" den Client schreiben. Der Server ist der Webserver, auf dem die Datei liegt. Ich würde Dir aber wirklich empfehlen, einen HTTP-Wrapper zu verwenden, z.B. CHttpFile aus den MFC. Es gibt keinen Grund, das Rad neu zu erfinden.
  • Autor
Ich würde Dir aber wirklich empfehlen, einen HTTP-Wrapper zu verwenden, z.B.

CHttpFile aus den MFC. Es gibt keinen Grund, das Rad neu zu erfinden.

Im Prinzip geb ich dir Recht, aber ich programmier lieber ohne MFC.

Wenn ich das jetzt mit sockets machen würde, wie mach ich das dann am besten?

Normalerweise schickt der Server ja nach Verbindungsaufbau die Daten z.B. mit send()

zum Client der diese dann z.B. mit recv() empfängt. Aber ich kann den Webserver ja nicht

dazu bringen die Datei zu öffnen und mir Zeilenweise zusenden (das Ganze soll nämlich

ein Downloadprogramm werden), oder?

Originally posted by Guybrush Threepwood

Im Prinzip geb ich dir Recht, aber ich programmier lieber ohne MFC.

War ja nur ein Beispiel. Es gibt auch andere Wrapperklassen.

Wenn ich das jetzt mit sockets machen würde, wie mach ich das dann am besten?
Wenn Du das wirklich von Hand machen willst, solltest Du Dir das HTTP-Protokoll ansehen, weil Du dann einen HTTP-Client schreiben musst.

Normalerweise schickt der Server ja nach Verbindungsaufbau die Daten z.B. mit send() zum Client der diese dann z.B. mit recv() empfängt. Aber ich kann den Webserver ja nicht dazu bringen die Datei zu öffnen und mir Zeilenweise zusenden (das Ganze soll nämlich

ein Downloadprogramm werden), oder?

Zeilenweise wird das nicht gehen. Mit Partial Content kannst Du aber bestimmte Teile der Datei anfordern.
  • Autor

Bei dem Link kam "Host not found", aber egal da kuck ich später nochmal.

Nochmal zum Socketserver, du hast hier irgendwo mal geschrieben das wenn man als

Port 0 angiebt, das er sich dann einen freien sucht, aber woher weiß der Client dann welchen

Port er benutzen muß? Kann ich den irgendwie benennen so das ich den Namen bei der

Verbindung angeben kann?

Originally posted by Guybrush Threepwood

Bei dem Link kam "Host not found", aber egal da kuck ich später nochmal.

Hm, bei mir klappts...

Nochmal zum Socketserver, du hast hier irgendwo mal geschrieben das wenn man als Port 0 angiebt, das er sich dann einen freien sucht, aber woher weiß der Client dann welchen Port er benutzen muß?
Du musst zwischen dem lokalen und dem Remote-Port unterscheiden. Der Remote-Port muss 80 sein (oder was halt im URL steht), der lokale Port ist vollkommen egal, da solltest Du 0 angeben.
Originally posted by Guybrush Threepwood

Ja, das ist klar, aber wenn der Server sich selber einen freien Port sucht, wie weiß

ich dann welchen Port ich im Client für die Verbindung angeben muß?

Der Client sucht sich einen freien lokalen Port. Der lokale Port des Servers ist der Remote-Port des Clients und umgekehrt.

Server:

lokaler Port: 80

Remote-Port: juckt ihn nicht, da er die Verbindung nur annimmt.

Client:

Remote-Port: 80

lokaler Port: was grad frei ist.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.