Kod: Markera allt
ifstream inFil;
inFil.open ("http://www.crazycasemod.se/temperature.txt");
Mvh
Kod: Markera allt
ifstream inFil;
inFil.open ("http://www.crazycasemod.se/temperature.txt");
Kod: Markera allt
#pragma once
class CBFInternetFile
{
public:
CBFInternetFile(void);
~CBFInternetFile(void);
bool ReadFile(char* lpFile);
protected:
BYTE* lpHtmlPage;
DWORD dwHtmlPageLen;
};
Kod: Markera allt
//
// Funktion: bfinternetfile.cpp
// Förklaring: hämtar en fil från internet.
//
#include "StdAfx.h"
#include "bfinternetfile.h"
CBFInternetFile::CBFInternetFile(void)
: lpHtmlPage(NULL)
, dwHtmlPageLen(0)
{
}
CBFInternetFile::~CBFInternetFile(void)
{
delete lpHtmlPage;
}
//
// Funktion: ReadFile
// Förklaring: Läs in en fil från internet.
// Rev: 1.0
//
// Historia: 02-07-09 Rev 1.0 Grund kod
//
bool CBFInternetFile::ReadFile(char* lpFile)
{
// Initiera variabler
HINTERNET hInternet;
HINTERNET hConnect;
DWORD dwReadByte = 0;
DWORD dwByteRead = 0;
BYTE* lpTmp0 = 0;
BYTE* lpTmp1 = 0;
BOOL bRet;
// Kontrollera så vi har en giltlig adress i lpFile
// Anslut till internet sida FEL RUTINER SKALL LÄGGAS IN!
// Öppna en anslutning
hInternet = ::InternetOpen("BFTeknik", INTERNET_OPEN_TYPE_DIRECT,
0, 0, 0);
// Öppna en adress (sida)
hConnect = ::InternetOpenUrl(hInternet, lpFile, NULL, 0,
0, 0); // Fel rutin
// Fråga efter tillgänglig data mängd
::InternetQueryDataAvailable(hConnect, &dwReadByte,0,0);
// Nollställ Html Page minne
dwHtmlPageLen = 0; // Inga byten i lpHttpPage
if(lpHtmlPage != 0)
delete lpHtmlPage;
// Läs in tills 0 byte åter står
if(dwReadByte > 0)
{
do
{
// Reservera temp minne för inläsning
lpTmp0 = new BYTE[dwReadByte];
// Läs tillgänglig data
bRet = ::InternetReadFile( hConnect, lpTmp0, dwReadByte, &dwByteRead);
if(!bRet)
{
dwHtmlPageLen = 0; // Något är fel
break;
}
// Göm undan inläst i html page
if(dwHtmlPageLen > 0)
{
// Reservera temp minne
lpTmp1 = new BYTE[dwHtmlPageLen];
// Kopiera över
for(DWORD i = 0; i < dwHtmlPageLen; i++)
{
lpTmp1[i] = lpHtmlPage[i];
}
delete lpHtmlPage; // Lämna tillbaks minnet
}
// reservera minne för html page som rymmer både tmp1 och tmp0
lpHtmlPage = new BYTE[dwHtmlPageLen + dwByteRead];
DWORD i;
// Adda nya storleken för htmlpage
// Add tmp1 först
for(i = 0; i < dwHtmlPageLen; i++)
{
lpHtmlPage[i] = lpTmp1[i];
}
// Add tmp0 sist
DWORD ii = 0;
for(i = dwHtmlPageLen; i < dwHtmlPageLen + dwByteRead; i++)
{
lpHtmlPage[i] = lpTmp0[ii];
ii++;
}
// Justera reserverat minne för lpHtmlPage
dwHtmlPageLen += dwByteRead;
// Lämna tillbaks temp minne
delete lpTmp0;
delete lpTmp1;
// Kontollera om mer data finns att läsa
::InternetQueryDataAvailable(hConnect, &dwReadByte,0,0);
}
while (dwReadByte >0 );
}
// Stäng internet uppkopplingen
::InternetCloseHandle(hConnect);
::InternetCloseHandle(hInternet);
return true;
}
Kod: Markera allt
#include <urlmon.h> //Must add the urlmon.h to project or URLDownloadToFile will not work.
#pragma comment(lib, "urlmon.lib") //Must add the lib file to project or URLDownloadToFile will not work.
int main()
{
HRESULT hr = URLDownloadToFile ( NULL, "http://www.crazycasemod.se/temperature.txt", "C:\\temperature.txt", 0, NULL );
return 0;
}
Om du lever på den abstraktionsnivån drar du fördel av att använda något annat språk än C++, t.ex Ruby:squiz3r skrev:Hej, jag tänkte försöka få ett C++ program att läsa från en .txt fil som ligger på ett webhotel. Adressen till den är http://www.crazycasemod.se/temperature.txt så då testade jag att skriva:...Kod: Markera allt
ifstream inFil; inFil.open ("http://www.crazycasemod.se/temperature.txt");
Kod: Markera allt
require 'net/ftp'
ftp = Net::FTP.new('www.crazycasemod.se')
ftp.login
ftp.gettextfile('temperature.txt')
ftp.close
Kod: Markera allt
require 'net/http'
Net::HTTP.get_print 'www.crazycasemod.se', '/temperature.txt'