Dans le code suivant, je souhaite extraire l'adresse IP du client connecté après avoir accepté une connexion entrante. Que dois-je faire après le accept()
pour y parvenir?Extraire l'adresse IP de la connexion qui écoute et accepte la programmation de socket sous Linux en c
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? – zneak
@zneak J'ai besoin d'IP pour le client qui me connecte – SjB
oui, c'est ce que 'accept()' vous donne dans 'cli_addr'! Vous avez seulement besoin de le formater - regardez les réponses ci-dessous. –