ip ermitteln aus bestehender TCP/IP-Verbindung
-
hi,
wie ermittelt man auf server-seite
die ip nach etablierung einer tcp/ip-verbindung?thx & gruß
-
die eigene ip oder die des remote?
-
Wie bzw. womit hast du denn deinen Server programmiert?
-
1. beides wär praktisch, aber hauptsächlich gehts mir um die remote-ip
2. geschrieben ist / wird server mit gcc unter linux und der client
mit vc.net, wobei im moment der server auch noch unter win läuft.
-
getpeername() und getsockname()
-
Ist zwar mit BCB geschrieben, kann man aber leicht nach VC++ portieren
//--------------------------------------------------------------------------- // Funktion GetHostIPAddresses schreibt die IP-Adressen des Rechners als // Strings im Format xxx.xxx.xxx.xxx in die übergebene TStrings-Instanz. // Die Funktion gibt die Anzahl der gefundenen IP-Adressen zurück. // Um nur die Anzahl der IP-Adressen zu ermitteln, kann der Funktion // im Parameter pslStrings ein NULL-Zeiger übergeben werden. // // Aufrufbeispiele: // // /* schreiben aller Rechner-IPs in eine ListBox: */ // GetHostIPAdresses(ListBox1-Items) // // /* schreiben aller Rechner-IPs in die TStringList pslStrings: */ // GetHostIPAdresses(pslStrings); //--------------------------------------------------------------------------- int GetHostIPAddresses(TStrings* pslStrings) { if(pslStrings) pslStrings -> Clear(); WSAData stData; char caHostName[255]; hostent* pstHostEntry = NULL; in_addr stInetAddress; int ilRetVal = 0; // Winsock initialisieren: if(WSAStartup(0x0101, &stData) == 0) { // Hostnamen bestimmen: if(gethostname(caHostName, 255)) return 0; // Hostinformationen abrufen: pstHostEntry = gethostbyname(caHostName); if(pstHostEntry == NULL) return 0; // IP-Adressen bestimmen: for(int ilAddrIndex=0; pstHostEntry->h_addr_list[ilAddrIndex]; ilAddrIndex++) { stInetAddress.S_un.S_addr = *((DWORD*)pstHostEntry->h_addr_list[ilAddrIndex]); if(pslStrings != NULL) pslStrings -> Add(inet_ntoa(stInetAddress)); ilRetVal++; } } else return 0; WSACleanup(); return ilRetVal; }
-
danke.!