J'utilise une boucle infinie pour recevoir des données du serveur TCP Je dois effectuer d'autres tâches en boucle simultanément ayant une priorité plus élevée Mais le contrôle reste à recv()
fonction chaque fois qu'il attend Données TCP. Comment puis-je effectuer l'opération ci-dessus sans attendre que TCP reçoive des données?La fonction TCP recv() ne fonctionne pas en boucle
while(1)
{
rdlen = read(fd1, buf, (sizeof(buf) - 1));
if (rdlen > 0)
{
buf[rdlen] = 0;
printf("%s",buf);
memset(buf, 0, strlen(buf));
}
if((numbytes=recv(sockfd, buf1, wGetLen, 0)) != -1)
{
printf("%s %d\n", buf1, numbytes);
memset(buf1, 0, strlen(buf1));
}
}
https://stackoverflow.com/questions/15108122/recv -with-non-blocking-socket –
Mettez le socket en mode non-bloquant, et/ou utilisez 'select()', 'poll()', ou similaire pour déterminer s'il y a des données disponibles avant d'essayer de lire depuis le prise. –
Programmation cargo-culte: 'memset (buf1, 0, strlen (buf1));' C'est un non-sens dangereux, IMHO – wildplasser