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...

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
Et je ne parviens pas à corriger ces erreurs...

Le code :

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;
}
Je compile en faisant gcc -o client client.c -Wall

Si vous pouviez m'aider ;-).

Merci à vous.