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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
int main(){
char tmp, tmp2;
char suppr_serveur1[20+1]="rm -f serveur1";
char suppr_serveur2[20+1]="rm -f serveur2";
char suppr_client1[20+1]="rm -f client1";
char suppr_client2[20+1]="rm -f client2";
char grilleclients[2][11][11];
int ok=0;
//suppression des anciens fifos
//LA SUPPRESSION SE FAIT D'OFFICE
system(suppr_serveur1);
system(suppr_serveur2);
system(suppr_client1);
system(suppr_client2);
//Creation et ouverture du premier canal de communication
int A = mkfifo("serveur1", 0666);
if (A==-1) {
puts("\nProbleme de création de canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int canal1aller = open("serveur1",2);
if (canal1aller==-1) {
puts("\nProbleme d'ouverture du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int C=mkfifo("client1", 0666);
if (C==-1) {
printf("\nC=%d",C);
puts("\nProbleme de création du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int canal1retour=open("client1",2);
if (canal1retour==-1){
puts("\nProbleme d'ouverture du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
system("clear");
puts("Serveur pret.\nAttente du PREMIER joueur.");
//test présence joueur 1 + envoi num client
read(canal1retour, &tmp, 1);
if (tmp=='A') {
printf("\tClient 1 connecte.");
ok=1;
}
else {
puts("\nProbleme de connection avec premier joueur");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
write(canal1aller,"1",1); //client 1
puts("\nAttente du SECOND joueur.");
//test présence joueur 2 + envoi num client
read(canal1retour, &tmp2, 1);
if (tmp2=='A') {
printf("\tClient 2 connecte.");
ok=1;
}
else {
puts("\nProbleme de connection avec second joueur");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
write(canal1aller,"2",1); //client 2
//ouverture du second canal de communication
puts("\nTentative de creation et d'ouverture du second canal de communication");
int B = mkfifo("serveur2", 0666);
if (B==-1) {
puts("\nProbleme de création du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int canal2aller = open("serveur2",2);
if (canal2aller==-1) {
puts("\nProbleme d'ouverture du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int D=mkfifo("client2", 0666);
if (D==-1) {
printf("\nclient2=%d",D);
puts("\nProbleme de création du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
int canal2retour=open("client2",2);
if (canal2retour==-1) {
puts("\nProbleme d'ouverture du canal de communication");
puts("Appuyer sur enter pour quitter");
getchar();
exit(-1);
}
puts("\nLes deux canaux de communications sont etablis.");
puts("Les joueurs procedent à l'encodage de leur grille");
/*
canal1aller = serveur1: pour envoyer ou client1
canal2aller = serveur2: pour envoyer au client2
canal1retour = client1: pour reçevoir du client1
canal2retour = client2: pour recevoir du client2
*/
//Dit au 2 joueurs qu'ils peuvent encoder leur grilles
if (write(canal1aller,"Z",1)==1) printf("\nj1=OK"); else printf("\nj1=KO");
if (write(canal2aller,"Z",1)==1) printf("\nj2=OK"); else printf("\nj2=KO");
/*
//Reception des grilles.
//joueur 1
read(canal1retour,grilleclients[0],121);
write(canal1aller,"O",2); //accusé de réception grille joueur 1
//joueur 2
read(canal2retour,grilleclients[1],121);
write(canal2aller,"O",2); //accusé de réception grille joueur 2*/
} |
Partager