Socket bloquant ==> non bloquant

cs_Guigar Messages postés 105 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 juin 2011 - 20 janv. 2009 à 11:44
razuki Messages postés 242 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 5 décembre 2012 - 15 févr. 2011 à 12:27
Bonjour, je programme en C sous linux. J'ai a l'heure actuelle fait un petit programme de socket en C, en mode bloquant c'est a dire que j'attends la connexion d'un client, je lit le buffer puis je ferme la connexion. Ceci marche tres bien

J'aurai aimer savoir si c'est facile de transformer cela en non bloquant

voila un petit bout de code :

Code :


int main(int argc, char *argv[])


{


int sockfd, newfd, size;


struct sockaddr_in local;


struct sockaddr_in remote;


bzero(&local, sizeof(local));


local.sin_family = AF_INET;


local.sin_port = htons(PORT);


local.sin_addr.s_addr = INADDR_ANY;


bzero(&(local.sin_zero), 8);


if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1)


{


perror("socket");


exit(1);


}


if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == -1)


{


perror("bind");


exit(1);


}


if(listen(sockfd, 5) == -1)


{


perror("listen");


exit(1);


}


size = sizeof(struct sockaddr_in);


while(1)


{


if((newfd=accept(sockfd, (struct sockaddr *)&remote, &size)) == -1)


{


perror("accept");


exit(1);


}


if (!fork())


{


send(newfd,msg,sizeof(msg), 0);


 


 


close(0);


close(newfd);


}


}


return(0);


}

Merci d'avance

1 réponse

razuki Messages postés 242 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 5 décembre 2012
15 févr. 2011 à 12:27
SAlut Guigar,
j'aimerais savoir :
1) c'est quoi mode bloquant, et non bloquant ?
2) comment reconnaitre qu'une socket est en mode bloquant ou pas ?
3) quand faut - il utiliser une socket en mode bloquant, en mode non bloquant ?

Merci d'avance.
0