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 (566 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 (868 Punkte)