[WinSock, C++] gethostbyname(); - Tylko Google ?
Ostatnio zmodyfikowano 2013-01-08 19:03
krystian11102 Temat założony przez niniejszego użytkownika |
[WinSock, C++] gethostbyname(); - Tylko Google ? » 2013-01-05 09:29:06 Witam. Napisałem sobię programik sprawdzający ip... Gdy chcę użyć gethostbyname(tu_string); wyskakuje "Aplikacja przestała działać" ... Oczywiście gdy wpiszę google.com to działa, gdy drugi raz chcem wpisać np. wp.pl to wyskakuje "Aplikacja blablabla" .. :) Co co może chodzić ?.. |
|
xevuel |
» 2013-01-05 09:49:23 Kod. |
|
krystian11102 Temat założony przez niniejszego użytkownika |
» 2013-01-05 09:57:28 #include <winsock2.h> #include <ws2tcpip.h> #include <windows.h> #include <string> #include <iostream> #include <fstream> #pragma comment(lib, "ws2_32.lib") using namespace std; int main() { for(;; ) { WSADATA wsaData; int i = 0; struct hostent * remoteHost; struct in_addr addr; string adres; cout << "Wpisz Adres: "; cin >> adres; WSAStartup( MAKEWORD( 2, 2 ), & wsaData ); cout << endl << "Laczenie z hostem... (" << adres << ")"; remoteHost = gethostbyname( adres.c_str() ); addr.s_addr = *( u_long * ) remoteHost->h_addr_list[ ++i ]; cout << endl << "Adres IP Hosta: " << inet_ntoa( addr ); system( "pause" ); system( "cls" ); } }
|
|
crash |
» 2013-01-05 09:59:51 MSDN: "Note The gethostbyname function has been deprecated by the introduction of the getaddrinfo function. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function instead of gethostbyname."
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738524(v=vs.85).aspx
Pokaż koda, inaczej ciężko cokolwiek wywnioskować ;>
|
|
krystian11102 Temat założony przez niniejszego użytkownika |
» 2013-01-05 10:01:38 Pokazałem :D |
|
xevuel |
» 2013-01-05 10:07:24 Nie sprawdzasz, czy remoteHost nie jest równy NULL i zupełnie bez sensu inkrementujesz i: addr.s_addr = *( u_long * ) remoteHost->h_addr_list[ ++i ]; @crash, Zapoznaj się z tym: Kurs STC |
|
krystian11102 Temat założony przez niniejszego użytkownika |
» 2013-01-05 10:13:58 Właśnie to zrobiłem... Ale niestety, "Aplikacja przestała działać" a gdy uruchamiam przez kompilacje i w trakcie działania programu to ... "Unhandled exception at 0x01117 in winsock.exe: 0xC0000005: Access violation reading location 0x00000000." I wskazuje na linijkę: addr.s_addr = *( u_long * ) remoteHost->h_addr_list[ ++i ];
.... |
|
crash |
» 2013-01-05 10:14:46 xevuel@ spoko, zerknę zaraz,
Krystian22201@ xevuel ma rację - brak sprawdzenia czy nie jest null, oraz całkiem niepotrzebna inkrementacja - program wysypuje się z kodem błędu oznaczającym wyjście poza tablicę lub nieprawidłową operacją na wskaźnikach.
edit: Zapoznaj się z linkiem, który podrzuciłem wcześniej. Microsoft zaleca używania innego sposobu, gdyż ten uważa za przestarzały. |
|
« 1 » 2 |