Auslesen u. Anzeigen d. IP Help
-
Hi,
ich habe mal wieder ein Frage, für die ich zwar
Codebeispiele, aber keine genaue Erklärung gefunden habe.
Ich versuche in das Steuerelement "IP-Adresse" den untenstehenden
Code einzubinden(aus der FAQ) :AfxSocketInit(NULL); hostent *hEnt = 0; char hostname[20]; gethostname(hostname,20); hEnt = gethostbyname( hostname ); if ( hEnt ) { CString m_ipadresse = inet_ntoa( *(LPIN_ADDR)*hEnt->h_addr_list ); UpdateData(FALSE); }
Ich habe bereits die Variable(m_ipadresse) dem Steuerlement
zugeordnet. Auch habe ich #include <afxcmn.h> eingebunden.
Nur wie muß ich den Code zuordnen ? Gehört der nicht in meine
Funktion ? Ich erhalte da nur Fehlermeldungen.
Irgendwie muß man das doch zum laufen bekommenEin schon etwas verzweifelter
Chris
-
AfxSocketInit(NULL); hostent *hEnt = 0; char hostname[20]; gethostname(hostname,20); hEnt = gethostbyname( hostname ); if ( hEnt ) { m_ip.SetWindowText(inet_ntoa( *(LPIN_ADDR)*hEnt->h_addr_list )); }
m_ip ist vom Typ
CIPAddressCtrl m_ip;
-
Confirmed
Läuft einwandfrei.
THX UNIX-TOM
Chris
-
Weitere Frage:
in der FAQ habe ich folgenden Quelltext zum auslesen des Computernamens(Fremd PC) anhand der IP gefunden(by Commander, Thema: Netzwerk...):
struct hostent *pHostInfo; //SO muss es deklariert werden unsigned long IPAddress = inet_addr(m_to); //in m_to steht die abzufragende IP WSADATA WSAData; memset(&WSAData, 0, sizeof(WSAData)); if(::WSAStartup(MAKEWORD(1, 0), &WSAData) == FALSE) { pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET); } if(!pHostInfo) { WSACleanup(); } CString test = pHostInfo->h_name; //wandelt die struct wohl in ne string um ;) MessageBox(test,"test",MB_OK);
Frage: warum bekomme ich beim umsetzen des Quelltextes diesen Fehler
--> inet_addr' : Konvertierung des Parameters 1 von 'class CIPAddressCtrl' in 'const char *' nicht moeglich. Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werdenws2_32.lib wurde gelinkt.
Was mache ich da möglicherweise falsch ?Chris
-
Wie hast du m_to deklariert???
Ich habe dort einen CString benutzt, und es klappt super!
Mach es mal so:CString m_to; m_to = "000.000.000.000"; //Geb mal hier deine IP ein struct hostent *pHostInfo; unsigned long IPAddress = inet_addr(m_to); WSADATA WSAData; memset(&WSAData, 0, sizeof(WSAData)); if(::WSAStartup(MAKEWORD(1, 0), &WSAData) == FALSE) { pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET); } if(!pHostInfo) { WSACleanup(); } CString test = pHostInfo->h_name; //wandelt die struct wohl in ne string um ;) MessageBox(test,"test",MB_OK);
Also bei mir funzt es, wie gesagt ich denke das du m_to anders deklariert hast
-
Hi C-O-M-M-A-N-D-E-R,
Ich habe ein Steuerelement "IP_Adresse", dort habe ich eine
Membervariable CIPAddress -> m_to stehen.Der Aufruf erfolgt
dann über einen Button, in dem der obige Code steht.Als CString klappt es wunderbar. Muß dann nur ein einfaches
Eingabefeld dafür erstellen. Wie mach ich das mit CIPAddress ?
Ich vermute diese ZeilepHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET);
muß dann anders lauten wegen dem beschriebenen Fehler oben, oder ?
Keinen Plan
Chris
-
mhh hab mich mit diesem steuerelement noch nicht auseinander gesetzt sorry
-
Schade,
wenn jemand eine Lösung hat, bitte posten !
Ich versuch auch mal weiter das zum laufen zu bekommen.
Chris