lima-city: Webhosting, Domains und Cloud
2 Pluspunkte 0 Minuspunkte

Ich habe ein Struct in dem ich Informationen zu einem verbundenen Socket speichere.

typedef struct {
    SOCKET socket;
    char username[20];
} ClientInfo;

Diese ClientInfo Objekte speichere ich dann alle in einem std::vector.

std::vector<ClientInfo> clients;

ClientInfo clientInfo;
clientInfo.socket = clientSocket;
strcpy(clientInfo.username, "anonymous");
clients.push_back(clientInfo);

Wie kann ich die IP Adresse eines ClientInfo bekommen?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Mit der Funktion getpeername() kannst du die IP Adresse des Client anzeigen.

sockaddr_in addr;
int addrLen = sizeof(addr);
	
std::string result = "";
if (getpeername(clientInfo.socket, (sockaddr*)&addr, &addrLen) == 0) {
    result = inet_ntoa(addr.sin_addr);
}
return result;
von (487 Punkte)  
0 Pluspunkte 0 Minuspunkte

Du kannst die Funktion inet_ntop verwenden.

char ipBuffer[INET_ADDRSTRLEN]; 
inet_ntop(AF_INET, &addr.sin_addr, ipBuffer, sizeof(ipBuffer));
von (619 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer