krystian11102 Temat założony przez niniejszego użytkownika |
[C++]FTP Upload/Download Możliwe ? » 2012-08-10 22:33:44 Witam.. Zaszła mnie chcęć pisania komunikatora (jeszcze nie wiem .. W winapi lub konsola) i mam problem.. Nie znam WinSock(jak ktoś zna kurs PL to bym prosił (nie znam Angielskiego tak bardzo abym czytał ze zrozumieniem) ) .. I szukam jak najłatwiejszego sposobu komunikatora..
Tak sobię żebym pisał z kumplem i dla ciekawostki..
Chodzi mi o to aby:
Mamy ten sam program.. On wpisuje:
Siema co tam.?
U mnie:
Siema co tam.?
i jak do niego napisze żeby też się wyświetlało ..
Pewnego wieczoru gdy już sobię leżałem pomyślałem trochę nad tym ii...
Doszedłem do wniosku żeby zrobic coś takiego żeby wysyłał plik na serwer np. rozmowa1.txt
a u drugiej osoby program czekał i jak plik się wgra u osoby 1(u mnie) to wyświetla się u niej czyli pobiera do tego samego katalogu gdzie jest program i odczytywał następną linijkę.. :D
Czy coś takiego jest możliwe ? :D |
|
anonim |
» 2012-08-10 22:46:34 kurs winsock to masz na tej stronie nawet w zakładce kursy |
|
krystian11102 Temat założony przez niniejszego użytkownika |
Wiem :D » 2012-08-10 22:49:01 Tak wiem, próbowałem ale nic nie szło.. Tzn. co chwilę błędy kompilacji :D nawet jeśli kopiowałem na "żywca" :D .. Spróbuję jeszcze raz tego winsock ... A w winapi się nie da? nie ma żadnej takiej biblioteki ? ; D |
|
yoogi |
» 2012-08-10 22:52:01 Do pobrania pliku możesz użyć http. Jeżeli używasz Windowsa to przyda ci się to: #include <Windows.h> #include <Wininet.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <tlhelp32.h> #include <string> #include <process.h> #include <vector> #include <string> #include <fstream>
#pragma comment(lib,"Wininet.lib")
using namespace std;
HINTERNET netstart() { const HINTERNET handle = InternetOpenW( 0, INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 ); if( handle == 0 ) { const DWORD error = GetLastError(); cerr << "InternetOpen(): " << error << "." << endl; } return( handle ); }
void netclose( HINTERNET object ) { const BOOL result = InternetCloseHandle( object ); if( result == FALSE ) { const DWORD error = GetLastError(); cerr << "InternetClose(): " << error << "." << endl; } }
HINTERNET netopen( HINTERNET session, LPCWSTR url ) { const HINTERNET handle = InternetOpenUrlW( session, url, 0, 0, 0, 0 ); if( handle == 0 ) { const DWORD error = GetLastError(); cerr << "InternetOpenUrl(): " << error << "." << endl; } return( handle ); }
void netfetch( HINTERNET istream, ostream & ostream ) { static const DWORD SIZE = 1024; DWORD error = ERROR_SUCCESS; BYTE data[ SIZE ]; DWORD size = 0; do { BOOL result = InternetReadFile( istream, data, SIZE, & size ); if( result == FALSE ) { error = GetLastError(); cerr << "InternetReadFile(): " << error << "." << endl; } ostream.write(( const char * ) data, size ); } while(( error == ERROR_SUCCESS ) &&( size > 0 ) ); }
int Download( WCHAR * url, string path ) { const HINTERNET session = netstart(); if( session != 0 ) { const HINTERNET istream = netopen( session, url ); if( istream != 0 ) { ofstream ostream( path.c_str(), ios::binary ); if( ostream.is_open() ) { netfetch( istream, ostream ); } else { return 1; } netclose( istream ); } netclose( session ); } return 0; }
std::wstring StringToWString( const std::string s ) { std::wstring temp( s.length(), L' ' ); std::copy( s.begin(), s.end(), temp.begin() ); return temp; }
int main( int argc, char * argv[] ) { if( argc != 3 ) return 1; string fname = argv[ 1 ]; string fs = argv[ 2 ]; Download(( WCHAR * ) StringToWString( fname ).c_str(), fs.c_str() ); return 0; }
Którym już wielokrotnie się chwaliłem na forum :) do pobrania też używałem kiedyś Wininet'u |
|
krystian11102 Temat założony przez niniejszego użytkownika |
» 2012-08-10 23:02:48 Myślałem że ogarnę kod xD Ale teraz widzę że jestem zielony ;D
Używam windows 7.. Dodałem wszystkie bibliotek, nie ruszając kodu (zaraz powiem dlaczego), skompilował się normalnie .. Ale po chwili wyświetla się komunikat:
"Program Komunikatorek.exe przestał działać.
System Windows może wyszikać rozwiązanie tego problemu w trybie online"...
A Szczegóły problemu:
--------------------------------------------------------
Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: komunikatorek.exe
Wersja aplikacji: 0.0.0.0
Sygnatura czasowa aplikacji: 502575c2
Nazwa modułu z błędem: ntdll.dll
Wersja modułu z błędem: 6.1.7600.16915
Sygnatura czasowa modułu z błędem: 4ec49caf
Kod wyjątku: c0000005
Przesunięcie wyjątku: 0002f963
Wersja systemu operacyjnego: 6.1.7600.2.0.0.256.1
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 34cb
Dodatkowe informacje 2: 34cbe11322d44489f2bc951d668581d5
Dodatkowe informacje 3: 610f
Dodatkowe informacje 4: 610fe1ba319fc943653f83c3991b15be
Przeczytaj w trybie online nasze zasady zachowania poufności informacji:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0415
Jeśli zasady zachowania poufności informacji w trybie online nie są dostępne, przeczytaj nasze zasady zachowania poufności informacji w trybie offline:
C:\Windows\system32\pl-PL\erofflps.txt
-----------------------------------------------------------------
O co może chodzić ? ;D
Aaa.. I nie wiem gdzie Url wpisać do kodu aby pobrał plik.. xD |
|
yoogi |
» 2012-08-10 23:07:29 Tutaj podajesz nazwe pliku w command line. Włącz cmd -> przejdź do katalogu z aplikacją i napisz mojaaplikacja.exe http://google.pl/ C:/users/user/desktop/
Powinno ci pobrać na pulpit |
|
krystian11102 Temat założony przez niniejszego użytkownika |
» 2012-08-10 23:23:34 Niestety.. Ten sam błąd "Program przestał działać(...)".. Próbowałem też w Microsoft Visual C++ 2010 Express Ale:
------ Build started: Project: komunikatorek, Configuration: Debug Win32 ------
komunikatorek.cpp
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
c:\users\demonidking\documents\visual studio 2010\Projects\komunikatorek\Debug\komunikatorek.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
.. Biblioteki dołączonie więc nie wiem co jest... |
|
yoogi |
» 2012-08-11 00:05:49 Zły projekt tworzysz, zrób tak: New projekt -> general -> empty projekt |
|
« 1 » 2 |