Nouveau sur le forum: donc salutations toussa !
je viens vous faire partager mes problemes (et ptetre partager mes connaissances avec les moins experimentés)
donc:
dans l'optique de realiser un jeux de Tarot Multijoueur avec un topain ... on s'est lancé dans le codage de tout ce merdier ...
lui s'occupe de la partie GTK (oui, on utilise GTK) et algorythme du jeux de carte.
et moi de la partie reseau.
(bon le background toussa, c'est fait )

l'ebauche de ce client/server marche parfaitement sous linux ... par contre, sous windows ... select as tendance a deconner ...
le bout de code: (apres j'explique les symptomes, promis)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
	for(;;)
	{
	listenfdset = masterfdset;
 
    if (select(sockfd+1, &listenfdset, NULL, NULL, NULL) == -1) 
	{
    perror("select");
    exit(1);
    }
 
	if (FD_ISSET(sockfd,&listenfdset))
	{
	memset(recvbuf,0,sizeof(recvbuf)); //clearing recvbuf
	len = recv(sockfd, recvbuf, sizeof(recvbuf), 0); //receiving
	if ( len == 0 )
	{
         close(sockfd);
         break;
    }
    else if ( len > 0)
	if(parser(recvbuf) == 2)
	printf("data received:%s",recvbuf); //comment really needed?
	}
 
	if(FD_ISSET(0, &listenfdset))
	{
	fgets(sendbuf,sizeof(sendbuf),stdin);
	send(sockfd, sendbuf, strlen(sendbuf), 0);
	}
	}
ce qu'il se passe donc:
- sous linux, ca marche impecable !
- sous windows, le select renvoie une erreur. No Error qu'il me dis (je veux bien hein)
donc, en commentant le exit, le reste s'execute ... les FD_ISSET renvoient 'TRUE' et donc ca "bloque" sur le recv ou le fgets ...

chose etonnante, il y'as aussi un select sur la partie serveur ... et le serveur semble marcher correctement.

le code complet: http://site.voila.fr/Warfactory/tarot_server.c
note: la partie serveur ressemble bcp a l'exemple donné par beej (dans le lien au debut), c'est normal, j'ai fait un copié // collé
je pense pas qu'il m'en veuille ...

edit: Nom des Variables suite a reproche 8)