Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinApi] Sprawdzanie swojego ip.

Ostatnio zmodyfikowano 2013-10-30 21:34
Autor Wiadomość
Vister26
Temat założony przez niniejszego użytkownika
[WinApi] Sprawdzanie swojego ip.
» 2013-10-27 19:58:27
Mam neostradę i zmienne ip.Po każdym resecie modemu mam inne ip, i muszę je zmieniać w kodzie programu a nastepnie kompilować, zamiast po ludzku włączyć sobie .exe

Jak napisać funckję, która wykryje moje ip?
P-94691
Buby
» 2013-10-27 20:44:21
Na twoim miejscu spróbowałbym tak:
1.Użyć komendy DOS'a
ipconfig
.
2.Zapisać ją do pliku poprzez kolejną komendę DOS'a - operator
>>ip.txt
.
3.Otworzyć plik poprzez
fstream
.
4.Przejść na pozycję, od której zaczyna się twoje ip, za pomocą
seekg
 [czytaj, poruszanie się po pliku, kur c++.]
5.Wczytać dane do stringa za pomocą operatora
plik >> zmienna
 [tu już normalnie C++].
6.Wstawić stringa do twojego programu.


Zaraz spróbuję coś wyklecić, może mi się uda :)
P-94692
xevuel
» 2013-10-27 20:50:55
Frazy, które należy wpisać w wyszukiwarkę google:
P-94693
Buby
Alternatywa
» 2013-10-27 21:22:08
Xewuel poszukał w Google, a ja sam sobie taki kod wymyśliłem.
Wiem, że to strata czasu, ale dla mnie ważna jest elastyczność
Ps. powinieneś być w stanie sam to napisać, po przeczytaniu kursu :)


KOD:

C/C++
#include <iostream>
#include <string>
#include <windows.h>
#include <fstream>
#include <conio.h>

int main()
{
    system( "ipconfig>>ip.txt" ); //Sprawdzenie ip, oraz zapis do pliku.
    std::ifstream ip; // Zmienna plikowa
    ip.open( "ip.txt" ); // Otwieramy ip.txt
    ip.seekg( 578 ); // Przechodzimy na pozycje, ktora nas interesuje - obliczylem, u mnie smiga.
    std::string IP; // Tworzymy zmienna IP
    ip >> IP; // Zapisujemy ip do zmiennej
    std::cout << IP; // Tutaj wyswietlenie, czy wszystko sie zgadza - u mnie gralo.
    ip.close(); // Zamkniecie pliku
    system( "del ip.txt" ); // Trzeba po sobie posprzatac - usuwamy plik txt.
    getch();
    return 0;
}


@Edit:
Ten sposob, sprawdza poprawnie stałe IP.
Jeśli masz zmienne, a w tym wypadku masz, to poda Ci tylko nr. Hosta w sieci lokalnej -,-'
No cóż, ale miło było próbować.

P.S - wie ktoś, ja sprawdzić globalne IP z cmd, a nie tylko mój nr. hosta, przy zmiennym IP?
P-94694
pekfos
» 2013-10-28 14:58:18
1.Użyć komendy DOS'a
Co rozumiesz przez DOS?

4.Przejść na pozycję, od której zaczyna się twoje ip, za pomocą
seekg
obliczylem, u mnie smiga.
A pod inną wersją Windowsa? Lub chociaż inną konfiguracją sprzętowo-programową?
P-94710
Buby
» 2013-10-28 16:59:47
Zakładałem, że użytkownik, będzie korzystał z programu tylko na swoim komputerze.
Co więcej, mój post miał pokazać, że w wypadku braku internetu istnieje jakaś inna możliwość,
na wykonanie powyższego zadania.
Pozdrawiam!
:)
P-94719
Vister26
Temat założony przez niniejszego użytkownika
» 2013-10-28 19:03:51
Też myślałem nad tym sposobem co zaproponował Buby, ale może być w pewnych przypadkach zawodny, np. kiedy 'ipconfig' zwróci co innego niż zwykle, albo właśnie w wypadku przeniesienia programu na inny komputer. Dlatego założyłem temat, żeby się dowiedzieć o lepszych metodach. A jako że z angielskiego nie jestem orłem, nie wpadłem na pomysł zapytania google po angielsku albo odwiedzenia dokumentacji (-_-)

Pozdrawiam ;)

@Edit:
Nadal mam problem. Użyłem takiego kodu:

C/C++
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    char * hostname;
   
    struct hostent * ent = gethostbyname( hostname );
    struct in_addr ip_addr = *( struct in_addr * )( ent->h_addr );
    printf( "Hostname: %s, was resolved to: %s\n",
    hostname, inet_ntoa( ip_addr ) );
    return 0;
   
}

Wszystko się kompiluje ale po chwili wyskakuje błąd (program przestał działać). Program zawiesza się w 6 linii kodu.
P-94731
pekfos
» 2013-10-28 21:23:42
Nie możesz podać takiej (niezdefiniowanej) wartości do gethostbyname().
P-94745
« 1 » 2
  Strona 1 z 2 Następna strona