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