La fonction uip_listen () n’attend pas d’écouter les connexions – bibliothèque uIP

Je développe actuellement une application qui effectue une communication TCP / IP entre un microcontrôleur atmel AT91SAM7x256 et ma machine Windows.

J’ai bien compilé et lié la bibliothèque standard uIP à mon application. Les fonctions uIP sont reconnues par l’application, mais la première chose à faire pour que l’application écoute une demande de connexion sur le port 51719 est:

#include  #include "uip.h" #define UIP_APPCALL client_app int main(void) { printf("Hello World "); uip_init(); printf("Establishing connection\n"); uip_listen(HTONS(51719)); if(uip_connected()) { printf("Connection established\n"); } return 0; } 

Mais le programme semble ignorer la partie d’écoute car il imprime simplement hello world et établit la connexion avant de quitter. J’aurais pensé qu’en raison de la fonction uip_listen() , le programme uip_listen() dans une sorte de boucle infinie en attendant une demande de connexion (c’est ainsi que la bibliothèque TCP / IP complète, Winsock, gère les choses).

N’est-ce pas la bonne façon d’écouter une connexion sur un certain port à l’aide de la bibliothèque uIP? J’apprécierais toute aide!

METTRE À JOUR

J’ai essayé d’insérer l’écoute dans une boucle while:

 printf("Establishing connection\n"); int c; while(1) { uip_listen(HTONS(51719)); if(c = uip_connected() != 0) { printf("Connection established\n"); break; } 

Mais il ne sera toujours pas connecté à partir de l’hôte remost.
}