Slt all,
je me suis mis aux sockets en c et j'avais deja codé plusieurs applications client serveur, la j'ai voulu simplifier un code d'un simple client qui reçoit des données et lorsque je le lance, quel que soit l'argument(qui peut accepté par gethostbyname() ), j'ai le message d'erreur "Connect error" qui correspond au message du check d'erreur que j'ai mis à la ligne de la fonction connect().
j'ai vérifié et revérifié le code je vois pas ce qui cloche.
Si un oeil plus éxpérimenté voulait bien se pencher dessus ca serait sympa.

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
# -------------------------------CODE----------------------------------
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
 
#define PORT 6666
#define MAXDATASIZE 100
 
int main(int argc, char *argv[])
{
int fd, data;
 
char buf[MAXDATASIZE];
 
struct hostent *he;
 
struct sockaddr_in server;
 
if(argc != 2) {
printf("Usage : %s <ip_address> \n", argv[0]);
exit(-1);
}
 
if((he = gethostbyname(argv[1])) == NULL) {
printf("Gethostbyname error\n");
exit(-1);
}
 
if(fd = socket(PF_INET, SOCK_STREAM, 0) == -1) {
printf("Socket error\n");
exit(-1);
}
 
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *) he->h_addr);
bzero(&(server.sin_zero), 8);
 
if(connect(fd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1);
printf("Connect error\n");
exit(-1);
 
if(data = recv(fd, buf, MAXDATASIZE, 0) == -1) {
exit (-1);
}
 
buf[data] = '\0';
printf("Message : \n\n %s \n",buf);
 
close(fd);
}
 
#-----------------------------------------\CODE-------------------------------------------
MERCI D'AVANCE