Bonjour,
Je voulais savoir si il existe lors d'une connexion UDP, un fonction ou une technique qui permet de recuperer l'adresse IP du client, au niveau du serveur?
merci
Bonjour,
Je voulais savoir si il existe lors d'une connexion UDP, un fonction ou une technique qui permet de recuperer l'adresse IP du client, au niveau du serveur?
merci
Normalement, en UDP, on utilise la fonction recvfrom(), et cette fonction retourne l'IP du client avec ses deux derniers paramètres.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
j'ai regardais sur le man de la fonction elle retourne un entier
int recvfrom(int s, void *buf, int len, unsigned int flags struct sockaddr *from, socklen_t *fromlen);
voici la page man en français:
http://www.linux-kheops.com/doc/man/...ecvfrom.2.html
Elle remplit surtout une structure sockaddr.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ça s'utilise ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #define TAILLE 80 ... char monBuffer[TAILLE]; int s = ... struct sockaddr clientAddr; socklen_t addrLen = sizeof(clientAddr); int res = recvfrom(s, monBuffer, TAILLE, 0, &clientAddr, &addrLen);
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
OUI c'est vrai
Est ce que vous pouvais m'éclairer comment je récupère l'adresse j'essaie avec ce code mais ça me renvoi null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 int main(void) { int sockfd, new_fd; // listen on sock_fd, new connection on new_fd struct sockaddr_in sock_server; struct sockaddr info_client; socklen_t socklen = sizeof(struct sockaddr_in); socklen_t sockAdrlen = sizeof(struct sockaddr); int s; char buf[MAXDATASIZE]; s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); sock_server.sin_family = AF_INET; sock_server.sin_port = htons(PORT); sock_server.sin_addr.s_addr = htonl(INADDR_ANY); bind(s, (struct sockaddr *) &sock_server, socklen); while (1) { //recv(s, buf, MAXDATASIZE, 0); recvfrom(s, buf, MAXDATASIZE, 0, &info_client, sockAdrlen); printf("Nouveau Message de %s \nContenu: %s\n",sock_server.sin_addr.s_addr, buf); } close(s); return 0; }
Pour l'afficher, il faut utiliser la fonction inet_ntoa():
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("Nouveau Message de %s \nContenu: %s\n",inet_ntoa(sock_server.sin_addr), buf);![]()
Partager