Bonjour à tous,


Jai un souci, mon printf à la fin de ce code ne fonctionne pas !

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include "er.h"
 
#define PORT 9632
#define MAX 1024
 
main(void) {
 
        int socket_listen_fd;
        struct sockaddr_in host_addr, *client_addr;
        socklen_t sin_size;    
        char buffer[MAX];
 
		sin_size = sizeof(struct sockaddr_in);
 
		client_addr = (struct sockaddr_in *)malloc(sin_size);
 
        if((socket_listen_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
            fatal("in socket");
 
 
        host_addr.sin_family = AF_INET;
        host_addr.sin_port = htons(PORT);
        host_addr.sin_addr.s_addr = htonl(INADDR_ANY);
        memset(&(host_addr.sin_zero), '\0', 8);
 
        if(bind( socket_listen_fd, (struct sockaddr *)&host_addr, sizeof(struct sockaddr)) == -1)
            fatal("in bind");
 
 
 
 
          for(;;){
                memset(buffer,0,MAX);
                recvfrom(socket_listen_fd, buffer, sizeof(buffer), 0, (struct sockaddr *)client_addr, &sin_size);
                fprintf(stdout,"%s",buffer);
          }
 
 
          close(socket_listen_fd);
 
 
}

Voici le sortie de strace.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
munmap(0xb7827000, 67055)               = 0
brk(0)                                  = 0x9d7b000
brk(0x9d9c000)                          = 0x9d9c000
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
bind(3, {sa_family=AF_INET, sin_port=htons(9632), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
recvfrom(3, "Bonjour ", 1024, 0, {sa_family=AF_INET, sin_port=htons(9634), sin_addr=inet_addr("127.0.0.1")}, [16]) = 8
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7837000
recvfrom(3,
Si je le sors de la boucle infini, il fonctionne. mais je ne comprends pas bien, option du compilateur gcc ?


Merci d'avance.

Erol