erreurs compilations client.c
Bonjour à tous,
Je m'initie aux sockets avec le tutoriel de developpez.net et j'ai pour mon client le même code que celui du tuto (partie TCP) :
Code:
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
| #include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close(s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
typedef struct in_addr IN_ADDR;
SOCKET sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET)
{
perror("socket()");
exit(errno);
}
struct hostent *hostinfo = NULL;
SOCKADDR_IN sin = { 0 };
const char *hostname = "localhost";
hostinfo = gethostbyname(hostname);
if (hostinfo == NULL)
{
fprintf (stderr, "Unknown host %s.\n", hostname);
exit(EXIT_FAILURE);
}
sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
sin.sin_port = htons(PORT);
sin.sin_family = AF_INET;
if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR)
{
perror("connect()");
exit(errno);
}
char buffer[1024];
if(send(sock, buffer, strlen(buffer), 0) < 0)
{
perror("send()");
exit(errno);
}
int n = 0;
if((n = recv(sock, buffer, sizeof buffer - 1, 0)) < 0)
{
perror("recv()");
exit(errno);
}
buffer[n] = '\0';
closesocket(sock); |
et gcc me renvoie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| client.c:16:1: erreur: un élément de l'initialisation n'est pas une constante
client.c:17:1: erreur: expected identifier or ( before if
client.c:24:13: attention : built-in function sin declared as non-function [enabled by default]
client.c:27:1: attention : la définition de données n'a pas de type ni de classe de stockage [enabled by default]
client.c:27:1: erreur: conflicting types for hostinfo
client.c:23:17: note: previous definition of hostinfo was here
client.c:27:12: attention : initialization makes integer from pointer without a cast [enabled by default]
client.c:27:1: erreur: un élément de l'initialisation n'est pas une constante
client.c:28:1: erreur: expected identifier or ( before if
client.c:34:4: erreur: expected =, ,, ;, asm or __attribute__ before . token
client.c:35:4: erreur: expected =, ,, ;, asm or __attribute__ before . token
client.c:36:4: erreur: expected =, ,, ;, asm or __attribute__ before . token
client.c:38:1: erreur: expected identifier or ( before if
client.c:46:1: erreur: expected identifier or ( before if
client.c:54:1: erreur: expected identifier or ( before if
client.c:60:1: attention : la définition de données n'a pas de type ni de classe de stockage [enabled by default]
client.c:60:1: erreur: variably modified buffer at file scope
client.c:60:1: erreur: conflicting types for buffer
client.c:44:6: note: previous declaration of buffer was here
client.c:60:1: erreur: initialisation invalide
client.c:63:1: attention : la définition de données n'a pas de type ni de classe de stockage [enabled by default]
client.c:63:1: attention : noms de paramètres (sans type) dans la déclaration de fonction [enabled by default] |