Quelqu'un peut-il expliquer pourquoi, par exemple, ce printf n'est pas exécuté avant d'avoir appelé la fonction ConnectionSocket()?Blocage d'un socket UDP C
Je sais que les sockets bloquent par défaut, donc il attend jusqu'à ce qu'il reçoive quelque chose. Mais la fonction à ce moment-là n'est pas encore exécutée, pourquoi n'imprime-t-elle pas d'abord "test" sur l'écran?
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <stdbool.h>
#include <sys/time.h>
/* Global variables */
unsigned char buffer[1];
struct sockaddr_in serverAddr, clientAddr;
struct timeval timeout={10,0}; //set timeout for 10 seconds
int udpSocket, slen = sizeof(clientAddr);
int main(){
printf("test"); // -> for the first time executed when receiving a byte
initialize_pins();
ConnectionSocket();
loop();
return 0;
}
void ConnectionSocket(){
/*Create UDP socket*/
udpSocket = socket(AF_INET, SOCK_DGRAM, 0);
/*Configure settings in address struct*/
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(7891);
serverAddr.sin_addr.s_addr = inet_addr("192.168.0.184");
memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero);
/* set receive UDP message timeout */
setsockopt(buffer,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(struct timeval));
bind(udpSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr));
}
juste pour le test, essayez d'utiliser 'printf ("test \ n");' –
qui fonctionne, mais pourquoi ça ne marche pas sans la nouvelle ligne? Et ne fonctionne qu'après avoir reçu mon premier octet. – stickfigure4
Comment pouvez-vous dire que ce n'est pas? –