int main(){
int numclient;
char reponse[1];
/* creetab(&tableau);
affichetab(&tableau);
placerboat(&tableau);
*/
//connection vers serveur
int canalaller= open("client1",2);
int canalretour= open("serveur1",2);
if ((canalaller==-1) && (canalretour==-1)){
printf("\nConnection au serveur impossible.\nAppuyer sur enter pour quitter");
getchar();
exit(1);
}
//envoi de la demande de connection
printf("demande conn= %d",write(canalaller,"A",1));
//réception d'un # de client
printf("recep num= %d",read(canalretour,reponse,1));
printf("reponse=%c",reponse);
numclient=atoi(reponse);
printf("\nVous etes le joueur= %d",numclient);
//changement de fifos
if (numclient==1){
//pas de changement
}
else if (numclient==2){
puts("Changement de fifo");
close(canalaller);
close(canalretour);
canalaller=open("client2",2); //ouverture
canalretour=open("serveur2",2);
if ((canalaller==-1) && (canalretour==-1)){
printf("\nConnection au serveur impossible.\nAppuyer sur enter pour quitter");
getchar();
exit(1);
}
puts("1");
}
//attente du depart de serveur
read(canalretour,reponse,1);
printf("\nreponse= %c",reponse);
if (reponse!="Z") puts("\nServeur pas pret, veuillez recommencer");
/*
//encodage de la grille
puts("\nEncoder votre grille");
getchar();
//*******************
int i,j;
for (i=0; i<11; i++){
for (j=0; j<11; j++){
tableau<i>[j]="A";
}
}
//envoi de la grille
write(canalaller,tableau,121);
read(canalretour,reponse,2); //ack
printf("\nackCL1: %c ",reponse);
puts("\nLa grille a bien été envoyee");
getchar();*/
}
</i>
#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*/
}
Dernières astuces
Dernières questions
Forum Hardware
Forum Logiciels