Pokaż wyniki 1 do 4 z 4

Temat: sprawdzanie wiersji programu i ewentualna aktualizacja

  1. #1

    Exclamation sprawdzanie wiersji programu i ewentualna aktualizacja

    Witam was. jestem początkującym programistą , programuję(przynajmniej tak mi się wydaje)
    używam języka programowania c++ zaczynałem przy użyciu narzędzia visual c++ 6.0
    od nie dawna próbuję przy użyciu visual studio express 2005 net.
    mam do was bardzo sczególne pytanie.
    zainteresował mnie temat sprawdzania wersji oprogramowania np; "hello word". który znajduje sie na moim serwerze tzn..
    użytkownik który używa mojego programu :hello word
    właczając ten własnie program dostaje wiadomosc o istnieniu nowej wersji oprogramowania w postaci MessageBox który informuje ze jest np; wersja 2.0 a uzytkownik uzywa wersji 1.0 czy aktualizowac czyli chodzi mi o tzw.. autoupdater zarówno w wersji consolowej jak i w wersji dll. znalazłem oprogramowanie które jedno i drugie używa tegoż rozwiązania, podaję wam pliki które ułatwią wam zrozumienie mojego pytania.. z tym że chodzi mi bardziej o to że: chciałbym umiescic taki kod w swojej aplikacji a nie jako osobny program z góry dziekuję i jak juz sie tego nauczę to napewno podzielę sie kodem zródłowym i swoją nabytą wiedzą z innymi

    http://rapidshare.com/files/18621403...22_ad.rar.html

    http://www.speedyshare.com/330514539.html
    nie ukrywam że fajnie by było jak pokazalibyscie mi przyklady w postaci projektu src. consolowej.
    Ostatnio edytowane przez just : 01-19-2009 - 21:17 Powód: dodawanie plików

  2. #2
    Zarejestrowany
    Jan 2008
    Postów
    278

    Domyślnie

    Raczej nikt nie będzie się spuszczał nad przykładami tylko dlatego że jesteś początkujący , nie usprawiedliwia Cię to z braku pomysłów.

    Nie wydaje mi się żeby to było aż takie trudne.
    Uzyskujesz wersję aktualnie uruchomionego programu.
    Wysyłasz zapytanie do serwera z 'prośbą' o przesłanie aktualnej wersji owego programu.
    Jak już masz aktualną wersję :
    Kod:
    aktualna_wersja = X
    if(aktualna_wersja>WERSJA)
    {
         MessageBox i inne operacje z tym związane.
    }
    Co do update to już własna inicjatywa.
    Poczytaj o socketach , a Twój problem sam się rozwiąże.

    PS.Sorry , ale jakoś dziwnie kojarzy mi się to z Malware Może dlatego taki okrojony opis.

    Pozdrawiam VLN.
    Kod php:
    $zmienna $_POST['COS']; 
    Zamiast tego :
    Kod php:
    $zmienna htmlspecialchars($_POST['COS']); 
    I mamy zabezpieczenie przed XSS

  3. #3

    Domyślnie

    znalazłem cos takiego ale wystepuja mi błedy w kompilacji mozecie sprawdzic u siebie poprawnosc kodu i kompilacji?
    credit:MSDN:

    Kod:
    #define NO_FILE_SPECIFIED -1
    #define BAD_HOST -1
    #define CONNECTION_FAILURE -1
    #define BAD_SOCKET -1
    #define RECEIVE_BUFFER_SIZE 100
    
    int HTTPDownload(char *URL, char *LocalPath)
    {
    	HANDLE hFile;
    	DWORD dwRead;
    	WSAData wsadata;
    	sockaddr_in HTTPData; 
    	struct hostent *HTTPHost;
    	SOCKET HTTPSocket;
    	int iFile;
    	int iConnect;
    	int ct;
    	unsigned int RemoteAddr;
    	char *pFile;
    	char RemoteFileBuf[1000];
    	char Host[1000];
    	char *pHost;
    	char recvbuf[100];
    	char sendbuf[512];
    
    	if(strstr(URL, "/"))
    	{
    		sprintf(Host, "%s", URL);
    		pFile = strstr(URL, "/");
    		sprintf(RemoteFileBuf, "%s", pFile);
    		pFile = strstr(Host, "/");
    		*pFile = NULL;
    		printf(RemoteFileBuf);
    		pHost = &Host[0];
    	}
    	else
    	{
    		return NO_FILE_SPECIFIED;
    	}
    
    	WSAStartup(MAKEWORD(2,2), &wsadata);
    
    	HTTPSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if(HTTPSocket == INVALID_SOCKET) 
    	{
    		WSACleanup();
    		return BAD_SOCKET;
    	}
    
    	HTTPData.sin_family = AF_INET;
    	HTTPData.sin_port = htons(80);
    
    	if(isalpha(pHost[0]))
    	{
    		HTTPHost = gethostbyname(pHost);
    		if(HTTPHost == NULL)
    			return BAD_HOST;
    	}
    	else
    	{ 
    		RemoteAddr = inet_addr(pHost);
    		HTTPHost = gethostbyaddr((char*)&RemoteAddr, 4, AF_INET);
    		if(HTTPHost == NULL)
    			return BAD_HOST;
    	}
    	memcpy(&HTTPData.sin_addr.s_addr, HTTPHost->h_addr, HTTPHost->h_length);
    
    	iConnect = connect(HTTPSocket, (SOCKADDR*)&HTTPData, sizeof(HTTPData));
    	if(iConnect == SOCKET_ERROR)
    	{
    		WSACleanup();
    		return CONNECTION_FAILURE;
    	}
    
    	sprintf(sendbuf, "GET %s\r\n", RemoteFileBuf);
    	send(HTTPSocket, sendbuf, strlen(sendbuf), 0);
    
    	hFile = CreateFile(LocalPath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
    	while(ct = recv(HTTPSocket, recvbuf, RECEIVE_BUFFER_SIZE, 0))
    	{
    		iFile = WriteFile(hFile, recvbuf, ct, &dwRead, NULL);
    		memset(recvbuf, 0, sizeof(recvbuf));
    	}
    
    	iFile = CloseHandle(hFile);
    
    	closesocket(HTTPSocket);
    
    	WSACleanup();
    
    	return 0;
    }

  4. #4

    Domyślnie

    Jak piszesz programy na poziomie "hello word" to nie bierz się za sockety, wszystko przyjdzie z czasem, najpierw WinApi a potem biblioteka Winsock.
    Nie masz tu zadeklarowanych żadnych bibliotek tylko stałe, po 2 kompilator wyrzuca błędy, z których możesz dowiedzieć się co nie co o tym co źle zrobiłeś.
    Ostatnio edytowane przez Laik707 : 01-23-2009 - 16:30

Podobne wątki

  1. sprawdzanie biosu z windy?
    By mtbs in forum Windows
    Odpowiedzi: 9
    Autor: 07-18-2008, 06:23
  2. sprawdzanie stron www
    By promenada in forum Newbie - dla początkujących!
    Odpowiedzi: 2
    Autor: 06-09-2008, 13:08
  3. Sprawdzanie IP
    By eryk in forum Komunikatory
    Odpowiedzi: 7
    Autor: 10-17-2007, 09:35
  4. Aktualizacja systemu na serwerze
    By Dominik in forum Newbie - dla początkujących!
    Odpowiedzi: 12
    Autor: 07-28-2006, 17:59

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj