Avatar billede jannek_ek Nybegynder
07. august 2005 - 23:58 Der er 14 kommentarer og
1 løsning

ofstream til ftp-server

int main()
{
  char buffer[500];
  cin.getline(buffer,500);
  ofstream ud("ftp.frac.dk/ip.txt"" target="_blank">ftp://punkt:*******@ftp.frac.dk/ip.txt",ios::trunc);
  ud << buffer;
  ud.close();
  system("PAUSE");
  return 0;
}

jeg har lavet dette lille program så der hurtigt kan ændres i en lille tekststump i filen ip.txt
der kommer ingen fejlmeldinger, men heller ikke noget resultat på serveren...
Avatar billede bertelbrander Novice
08. august 2005 - 00:04 #1
Er du sikker på at man kan overføre data over ftp med en ofstream?

Har du prøvet at checke om ud bliver åbnet:
if(!ud)
  cout << "Failed to open ud" << endl;
Avatar billede jannek_ek Nybegynder
08. august 2005 - 00:08 #2
nej det har jeg så opdaget at man ikke kan, så derfor oprettede jeg et spørgsmaå om det...
Avatar billede bertelbrander Novice
08. august 2005 - 00:13 #3
Jeg tror at du er nød til at bruge en socket.
Hvilken kompiler bruger du?
Avatar billede arne_v Ekspert
08. august 2005 - 10:23 #4
Og hvis det er muligt at bruge HTTP fremfor FTP, så vil jeg anbefale det
Avatar billede jannek_ek Nybegynder
08. august 2005 - 14:45 #5
Jeg bruger bloodshed Dev-c++
og nej jeg tror ikke det er muligt med http
Avatar billede bertelbrander Novice
08. august 2005 - 20:42 #6
Jeg fik strikker et eksempel sammen. Det åbner en fil kaldet whatever.txt på serveren myserver.dk, hvortil det connecter med UserName og PassWord

#include <iostream>
#include <windows.h>
#include <wininet.h>

int main()
{
  HINTERNET HInternet = InternetOpen("MyApp", INTERNET_OPEN_TYPE_PROXY, 0, 0, 0);
  if(!HInternet)
  {
      std::cout << "Failed to open Internet" << std::endl;
      return 1;
  }

  HINTERNET HConnection = InternetConnect(HInternet, "myserver.dk", INTERNET_DEFAULT_FTP_PORT, "UserName", "PassWord", INTERNET_SERVICE_FTP, 0, 1);
  if(!HConnection)
  {
      std::cout << "Failed to open connection" << std::endl;
      return 2;
  }
  HINTERNET HFile = FtpOpenFile(HConnection, "whatever.txt", GENERIC_WRITE, FTP_TRANSFER_TYPE_ASCII, 1);
  if(!HFile)
  {
      std::cout << "Failed to open file: " << GetLastError() << std::endl;
      return 3;
  }
  DWORD Dummy;
  InternetWriteFile(HFile, "Hello World\n", strlen("Hello World\n"), &Dummy);
  InternetCloseHandle(HFile);
  InternetCloseHandle(HInternet);
}
Avatar billede jannek_ek Nybegynder
09. august 2005 - 00:01 #7
der er nogle fejl i det:

Kompiler: Default compiler
Eksekverer  g++.exe...
g++.exe "J:\JEK\Andet\c++\ftp test.cpp" -o "J:\JEK\Andet\c++\ftp test.exe"  -g3  -I"C:\Dev-Cpp\include\c++"  -I"C:\Dev-Cpp\include\c++\mingw32"  -I"C:\Dev-Cpp\include\c++\backward"  -I"C:\Dev-Cpp\include"  -L"C:\Dev-Cpp\lib"
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0xb1): In function `main':
J:/JEK/Andet/c++/ftp test.cpp:7: undefined reference to `InternetOpenA@20'
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0x10e):J:/JEK/Andet/c++/ftp test.cpp:14: undefined reference to `InternetConnectA@32'
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0x162):J:/JEK/Andet/c++/ftp test.cpp:20: undefined reference to `FtpOpenFileA@20'
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0x1c8):J:/JEK/Andet/c++/ftp test.cpp:27: undefined reference to `InternetWriteFile@16'
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0x1d3):J:/JEK/Andet/c++/ftp test.cpp:28: undefined reference to `InternetCloseHandle@4'
C:\DOCUME~1\JEK\LOKALE~1\Temp/ccgfbaaa.o(.text+0x1e1):J:/JEK/Andet/c++/ftp test.cpp:29: undefined reference to `InternetCloseHandle@4'

Eksekvering afbrudt
Avatar billede bertelbrander Novice
09. august 2005 - 00:20 #8
Du skal linke med wininet, den hedder libwininet.a med dev-cpp.
Du kan linke med den ved at tilføje -lwininet til linkeren.
Avatar billede jannek_ek Nybegynder
09. august 2005 - 15:57 #9
beklager men jeg er ikke helt med...
Avatar billede bertelbrander Novice
09. august 2005 - 20:09 #10
Jeg kender ikke dev-c++ ret godt. Hvilken version bruger du?

Prøv at gå til Options->Compiler Options. På Directories" tabben skriver du -lwininet i "Add the following commands when calling the compiler" og sætter et X i boxen.
Avatar billede jannek_ek Nybegynder
09. august 2005 - 22:35 #11
jo nu virker det mange tak
Avatar billede bertelbrander Novice
09. august 2005 - 22:38 #12
Når jeg finder lidt tid (inden for de første par dage) vil jeg prøve at lave et par klasser til at pakke koden ind i, så det bliver lidt lettere at bruge.
Jeg regner med at putte det på min hjemmeside.
Avatar billede jannek_ek Nybegynder
09. august 2005 - 22:41 #13
ok, det lyder som en god ide, hvad er din adresse?
og kom med et svar :D
Avatar billede bertelbrander Novice
09. august 2005 - 22:43 #14
Avatar billede jannek_ek Nybegynder
09. august 2005 - 22:47 #15
ok men mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Capgemini Danmark A/S

Financial Controller

Sentia Denmark A/S

Product Manager

Capgemini Danmark A/S

ServiceNow Consultant

Netcompany A/S

Test Consultant

Advansor A/S

IT Project Manager