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? |
|
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 :) |
|
xevuel |
» 2013-10-27 20:50:55 |
|
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: #include <iostream> #include <string> #include <windows.h> #include <fstream> #include <conio.h>
int main() { system( "ipconfig>>ip.txt" ); std::ifstream ip; ip.open( "ip.txt" ); ip.seekg( 578 ); std::string IP; ip >> IP; std::cout << IP; ip.close(); system( "del ip.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? |
|
pekfos |
» 2013-10-28 14:58:18 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ą? |
|
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! :) |
|
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: 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. |
|
pekfos |
» 2013-10-28 21:23:42 Nie możesz podać takiej (niezdefiniowanej) wartości do gethostbyname(). |
|
« 1 » 2 |