Bonjour,
Je débute actuellement dans l'utilisation des sockets. Je lis tout ce qui me passe sous la main les concernant. Pour voir ce que ça faisait j'ai eu envie de tester un code fourni par http://vidalc.chez.com/lf/socket.html.
Mais en le compilant j'obtiens les erreurs suivantes...
Et je ne parviens pas à corriger ces erreurs...Dans le fichier inclus à partir de /usr/include/errno.h:36,
à partir de client.c:3:
/usr/include/bits/errno.h:25:26: erreur: linux/errno.h : Aucun fichier ou dossier de ce type
Dans le fichier inclus à partir de /usr/include/sys/socket.h:40,
à partir de /usr/include/netinet/in.h:25,
à partir de /usr/include/netdb.h:28,
à partir de client.c:5:
/usr/include/bits/socket.h:364:24: erreur: asm/socket.h : Aucun fichier ou dossier de ce type
Le code :
Je compile en faisant gcc -o client client.c -Wall
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 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4206 #define TAILLE_TAMPON 100 int main(int argc, char** argv) { int sockfd; int nb_octets; char tampon[TAILLE_TAMPON]; struct hostent* he; struct sockaddr_in son_adresse; if (argc != 2) { fprintf(stderr, "usage: client nom\n"); return 1; } if ((he = gethostbyname(argv[1])) == NULL) { perror("gethostbyname"); return 1; } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); return 1; } son_adresse.sin_family = AF_INET; son_adresse.sin_port = htons(PORT); son_adresse.sin_addr = *((struct in_addr*)he->h_addr); bzero(&(son_adresse.sin_zero), 8); if (connect(sockfd, (struct sockaddr*)&son_adresse, sizeof(struct sockaddr)) == -1) { perror("connect"); return 1; } if ((nb_octets = recv(sockfd, tampon, TAILLE_TAMPON, 0)) == -1) { perror("recv"); return 1; } tampon[nb_octets] = '\0'; printf("Reçu : %s\n", tampon); return 0; }
Si vous pouviez m'aider ;-).
Merci à vous.
Partager