Extrait IP de connexion écouter et accepter dans le support de la programmation sous Linux en c

Dans le code suivant, je voudrais extraire l'adresse IP du client connecté après avoir accepté une connexion entrante. Que dois-je faire après la accept() pour l'atteindre?

int sockfd, newsockfd, portno, clilen;
portno = 8090;
clilen = 0;
pthread_t serverIn;
struct sockaddr_in serv_addr, cli_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
    perror("ERROR opening socket");
}
bzero((char *) & serv_addr, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(portno);
serv_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof (serv_addr)) < 0)
{
    perror("ERROR on binding");
}

listen(sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) & cli_addr, &clilen);
Vous l'avez déjà dans cli_addr, n'est-ce pas?
J'ai besoin d'IP pour le client de se connecter à moi
oui, c'est ce que accept() est de donner de nouveau à vous dans cli_addr! Vous avez seulement besoin de le formater - regarder les réponses ci-dessous.

OriginalL'auteur Sajad Bahmani | 2010-01-20