Hey Leute, habe hier einen kleinen Server geschrieben der soweit einwandfrei funktioniert... ich würde nun gerne die Ip adresse der Clients speichern.
Ich habe dazu eine Funktion geschrieben die dies eigentlich übernehmen sollte.
aufrufen tue ich die funktion so:
Eigentlich müsste ich nun die Ip des neu verbundenen Clients in "ip_adress" stehen haben, allerdings steht dort eine beliebige ip ( immer die selbe).
Zu erwarten wäre doch, dass dort, wenn ich den client von meinem rechner aus connecte, entweder die 127.0.0.1 steht, wenn ich auf localhost connecte, oder meine internet ip, wenn ich auf meinen hostname connecte ...
Wäre für Hilfe wirklich sehr dankbar, da mir google hier nicht weitergeholfen hat, wenn man dort fündig wird geht es immer darum die eigene IP abzurufen, nicht aber die IP eines clients.
Ich habe dazu eine Funktion geschrieben die dies eigentlich übernehmen sollte.
Code:
int client::get_ip(SOCKADDR_IN addr)
{
char *ip;
ip = '\0';
ip = inet_ntoa(addr.sin_addr);
if(ip == '\0')
{
cout<<"Fehler beim speichern der Ip: "<<WSAGetLastError()<<endl;
return 1;
}
else
{
ip_adress = ip;
cout<<"ip_adress: "<<ip_adress<<endl;
return 0;
}
}
aufrufen tue ich die funktion so:
Code:
rc=recvfrom(clients[i],buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
new_client.get_ip(remoteAddr);
Eigentlich müsste ich nun die Ip des neu verbundenen Clients in "ip_adress" stehen haben, allerdings steht dort eine beliebige ip ( immer die selbe).
Zu erwarten wäre doch, dass dort, wenn ich den client von meinem rechner aus connecte, entweder die 127.0.0.1 steht, wenn ich auf localhost connecte, oder meine internet ip, wenn ich auf meinen hostname connecte ...
Wäre für Hilfe wirklich sehr dankbar, da mir google hier nicht weitergeholfen hat, wenn man dort fündig wird geht es immer darum die eigene IP abzurufen, nicht aber die IP eines clients.