Bonjour à tous,

J'ai fait 2 programmes : 1 serveur et 1 client qui communique par socket.

L'application marche bien et je voudrais obtenir l'adresse IP du client qui répond au serveur.

Voici le code de la partie serveur :

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
/***********************************SERVEUR TCP**********************************/
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<unistd.h>
#include<stdlib.h>
 
#define PORTS 2058
 
main() 
{
int namelen, sock, nsock;
char buf[20];
struct sockaddr_in adr_s, adr_c;
int lg, n, pid;
int bindReturn;
int listenReturn;
int acceptReturn;
 
/* Cr�ation socket */
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
 
printf("Voici le Socket : %d\n", sock);
 
/* Attachementsocket */
 
/**************************************************************************************/
/*  Server address	*/
/**************************************************************************************/
/*construit_adresse_locale (&adr_c, 0); */
 
adr_s.sin_family = htons(AF_INET); 
adr_s.sin_addr.s_addr = htonl(INADDR_ANY); 
adr_s.sin_port = htons(PORTS); 
 
bindReturn = bind(sock, (struct sockaddr*)&adr_s, sizeof(adr_s));
 
printf("Voici le bind : %d\n", bindReturn);
 
listenReturn = listen(sock,5);
 
printf("Voici le listen : %d\n", listenReturn);
 
/* Boucle d'acceptation d'une connexion */
 
while(1==1) 
 
{ 
	/* Attente de question sur la socket */
 
	lg= sizeof(adr_c);
	nsock= accept (sock, (struct sockaddr*)&adr_c, &lg);
 
	pid= fork();	
 
	if (pid== 0) 
 
	{
		close (sock);
		read (nsock, buf, 20);
 
		printf("%s\n",buf); 
 
	             /*Ici on obtient un chiffres qui ne ressemble pas à une adresse IP*/
		printf("%d\n", inet_ntoa((struct sockaddr*)&adr_c)); 
 
		close (nsock);
 
		exit(0);
	}
}
}
Avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
printf("%d\n", inet_ntoa((struct sockaddr*)&adr_c));
je n'arrive pas à obtenir l'adresse IP du client.

Auriez-vous une idée ?

Merci beaucoup pour vos réponses.

Laurent.