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 : 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
#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 : 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
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 ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘.’ token
client.c:35:4: erreur: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__attribute__’ before ‘.’ token
client.c:36:4: erreur: expected ‘=’, ‘,’, ‘;’, ‘asmor ‘__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]