Bonjour,
Je suis actuellement en train de bosser sur un mini serveur en c++.
Tout ce qui est reseau passe donc par les sockets.
Histoire d'améliorer un petit peu j'aimerais que, quand l'utilisateur se connecte, le serveur recupere l'adresse IP du client.
Pour windows j'ai ce code :
Le probleme est qu'aparement sous UNIX, getpeername ne prends pas une struct sockaddr_in en parametre, mais une struct sockaddr, qui ne permet pas d'utiliter inet_ntoa ou toute autre fonction (dumoins dans la limite de mes connaissanes ^^) qui renverrait l'adresse IP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 t_socketlist *list; #ifdef WIN32 int sin_size; #else socklen_t sin_size; #endif //int i; SOCKADDR_IN addr; sin_size = sizeof(addr); getpeername(fd, (SOCKADDR *)&addr, &sin_size); std::cout << "Client " << inet_ntoa(addr.sin_addr) << std::endl;
Ma question serait donc : si quelqu'un sait comment faire pour recuperer l'adresse IP sous UNIX, je suis assez preneur...
Merci d'avance
Partager