Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cliente.c
- #include "util.h"
- pthread_t tid_jogadas, tid_ecra;
- void * funcJogadas(void * arg){//funcao que envia as jogadas
- int fd_jogadas, i;
- jogada jog;
- fd_jogadas = open(FIFO_JOGADAS, O_RDWR);
- i = write(fd_jogadas, &jog, sizeof(jog));
- return NULL;
- }
- void * funcEcra(void * arg){//funcao com ncurses
- int fd_ecra, i;
- pos_jogadores pos;
- fd_ecra = open(FIFO_ECRA, O_RDWR);
- i = read(fd_ecra, &pos, sizeof(pos));
- //NCURSES
- return NULL;
- }
- void jogadoresDisponiveis(){
- int i, jogador_escolhido = 0, flag=0, fd, fd_resposta;
- for(i=0;i<10;i++){
- if(jogador[i].pid==0){
- printf("Jogador %d\n", i);
- }
- }
- do{
- flag = 0;
- printf("Escolha o seu jogador: ");
- scanf("%d", &jogador_escolhido);
- if(jogador[jogador_escolhido].pid!=0){
- printf("Esse jogador ja foi escolhido!\n");
- }
- else if( jogador_escolhido < 0 || jogador_escolhido > 9){
- printf("Esse jogador nao existe!\n");
- }
- else{
- flag=1;
- jogador[jogador_escolhido].pid=getpid();
- printf("pid %d\n", jogador[jogador_escolhido].pid);
- fd_resposta = open(FIFO_JOGADORES, O_RDWR);
- i = write(fd_resposta, &jogador, sizeof(jogador));
- }
- }while(flag==0);
- }
- int main(){
- int fd, i, fd_resposta, res;
- login l;
- char fifocliente[100];
- //system("rm ccc*");
- l.pid = getpid();
- sprintf(fifocliente,"ccc%d", l.pid);
- printf("Username: ");
- scanf("%s", l.username);
- printf("Password: ");
- scanf("%s", l.password);
- mkfifo(fifocliente, 0600);
- fd = open(FIFO_LOGIN, O_WRONLY);
- i = write(fd, &l, sizeof(l));
- fd_resposta = open(fifocliente, O_RDONLY);
- i = read(fd_resposta, &l, sizeof(l));
- close(fd);
- close(fd_resposta);
- if(l.success==1){
- printf("you in ideot\n");
- i = read(fd_resposta, &jogador, sizeof(jogador));
- for(i=0;i<10;i++)
- printf("%d\n", jogador[i].pid);
- jogadoresDisponiveis();
- res = pthread_create(&tid_ecra, NULL, &funcEcra, NULL);
- res = pthread_create(&tid_jogadas, NULL, &funcJogadas, NULL);
- }
- else{
- printf("you no in ideot\n");
- exit(0);
- }
- scanf("%d", &i);
- close(fd);
- close(fd_resposta);
- unlink(fifocliente);
- }
- servidor.c
- #include "util.h"
- pthread_t tid_login, tid_cmd, tid_jogadores_conec, tid_jogadores_disp;
- pthread_mutex_t lock;
- void * funcLogin(void * arg){
- int fd, i, fd_resposta, x = 0;
- login l;
- FILE *f;
- char usernametxt[20], passwordtxt[20], fifocliente[100];
- f = fopen("login.txt", "rt");
- do{
- fd = open(FIFO_LOGIN, O_RDWR);
- i = read(fd, &l, sizeof(l));
- fflush(stdout);
- printf("pid conectado-> %d\n",l.pid);
- fseek(f,SEEK_SET, 0);
- l.success=0;
- while(fscanf(f, "%s %s\n", usernametxt, passwordtxt)==2){
- if(strcmp(usernametxt,l.username)==0 && strcmp(passwordtxt, l.password)==0)
- l.success=1;
- }
- if(l.success==1){
- sprintf(fifocliente,"ccc%d", l.pid);
- fd_resposta = open(fifocliente, O_RDWR);
- i = write(fd_resposta, &l, sizeof(l));
- i = write(fd_resposta, &jogador, sizeof(jogador));
- close(fd);
- close(fd_resposta);
- }
- else if(l.success==0){
- sprintf(fifocliente, "ccc%d", l.pid);
- fd_resposta = open(fifocliente, O_RDWR);
- i = write(fd_resposta, &l, sizeof(l));
- close(fd);
- close(fd_resposta);
- }
- }while(x==0);
- fclose(f);
- return NULL;
- }
- void * posJogadores(void * arg){
- }
- void * recebeJogadas(void * arg){
- int fd_jogadas, i;
- jogada jog;
- fd_jogadas = open(FIFO_JOGADAS, O_RDWR);
- i = read(fd_jogadas, &jog, sizeof(jog));
- //Fazer verificacoes e impedimentos(sair do ecra)
- }
- void * atualizaJogadores(void * arg){
- int fd_jogadores, fd_clientes, i,x=0;
- char fifocliente[100];
- login l;
- do{
- sprintf(fifocliente, "ccc%d", l.pid);
- fd_clientes = open(fifocliente, O_RDWR);
- i = write(fd_clientes, &jogador, sizeof(jogador));
- fd_jogadores = open(FIFO_JOGADORES, O_RDWR);
- i = read(fd_jogadores, &jogador, sizeof(jogador));
- }while(x==0);
- }
- void mostraJogadores(){
- int i;
- for(i=0;i<10;i++){
- printf("Jogador %d -> ", i);
- if(jogador[i].pid==0)
- printf("Ninguem\n");
- else
- printf("%d\n", jogador[i].pid);
- }
- }
- int main(){
- int res, res2, i=0;
- login l;
- char c = 'a';
- char cmd[100], tmp[100], username[20], password[20];
- void * ret;
- mkfifo(FIFO_LOGIN, 0600);
- mkfifo(FIFO_JOGADAS, 0600);
- mkfifo(FIFO_ECRA, 0600);
- mkfifo(FIFO_JOGADORES, 0600);
- //strcpy("trollao", tmp);
- res = pthread_create(&tid_login, NULL, &funcLogin, NULL);
- if(res!=0)
- printf("Shit Happened\n");
- res = pthread_create(&tid_jogadores_disp, NULL, &atualizaJogadores, NULL);
- if(res!=0)
- printf("Oh shit waddup\n");
- do{
- if(strcmp("stop",cmd)==0)
- pthread_cancel(tid_login);
- if(strcmp("users", cmd)==0){
- mostraJogadores();
- }
- printf("CMD> ");
- scanf("%[^\n]", cmd);
- strncpy(tmp, cmd, 4);
- if(strcmp("user", tmp)==0){
- for(i=0;i<strlen(cmd);i++){
- printf("%c", cmd[i]);
- }
- tmp[0]='\0';
- }
- }while(strcmp("shutdown", cmd)!=0);
- }
- util.h
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <fcntl.h>
- #include <pthread.h>
- #define TAM 20
- #define FIFO_LOGIN "fifoLogin"
- #define FIFO_JOGADAS "fifojogadas"
- #define FIFO_ECRA "fifoecra"
- #define FIFO_JOGADORES "fifojogadores"
- typedef struct {
- char username[TAM], password[TAM];
- int pid;
- }registo;
- typedef struct {
- char username[TAM], password[TAM];
- int pid, success;
- }login;
- typedef struct{
- int x_pos, y_pos, pid;
- }pos_jogadores;
- typedef struct{
- int ch, pid;
- }jogada;
- pos_jogadores jogador[10] = { {10,1, 0} , {7,10, 0}, {15,10, 0}, {6,22, 0} , {15,22, 0}, {10,49, 0} ,{10,41, 0}, {6,34, 0}, {15,34, 0}, {10,29, 0} };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement