problème serveur et multiclient
Bonjour j ai un petit souci de serveur TCP sous linux
C est un serveur de calcul assez simple qui marchait sans problème jusqu a ce que j inclue un fork.En effet une fois qu un client se connecte j ai le message suivant sur le serveur:
-succes
Mais si un deuxieme client se connecte j ai le message suivant:
-illegal seek
Que signifie ce message?
Malgré tous les deux client peuvent travailler sans probleme un eptit moment mais au bout d'un moment chaque client reçoit n importe quel information du serveur.
Par exemple un client reçoit le resultat d'un calcul d'un autre client.
J ai fais mes essais en local.Je ne peux pas mettre intégralement mon code parce que j'utilise des fonction inclu dans d autre fichier mais je vais mettre la partie definition des données et le fork.
Je pense que toutes ces erreurs sont dues à une mauvaise utilisation du fork.
Voici le code:
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
int main()
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
int ok=1;
struct sockaddr_in serv;
serv.sin_family = AF_INET;
serv.sin_port = htons(1234);
serv.sin_addr.s_addr = INADDR_ANY;
if (bind(sock,(struct sockaddr*)&serv,sizeof(serv)) != 0)
{
perror("Bind");
return(0);
}
if (listen(sock, 20) != 0)
{
perror("Listen");
return(0);
}
while(1)
{
sock_com=accept(sock,(struct sockaddr*)0,(int*)0);
if (sock_com==-1)
{
perror("ERREUR ACCEPTE");
return(-1);
}
else
{
perror("bravo connexion etablie");
}
int x=fork();
if(x==-1)printf("impossible fork\n");
if(x!=0)
{
close(sock_com);
}
if (x==0)
{
printf("on est dans le fils\n");
while(boucle==0)
{
*/traitement des requetes du client*/
}
}
}
return 0;
} |
Je ne sais pas si ce code servira des masses mais je voulais savoir si mon fork etait bien placé et que signifiat ce message "illegal seek".
merci beaucoup d'avance