diff --git a/client b/client new file mode 100644 index 0000000..cdc5d83 Binary files /dev/null and b/client differ diff --git a/client.c b/client.c new file mode 100644 index 0000000..e39bc62 --- /dev/null +++ b/client.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +//declaraao de funcoes +#include "dec.h" +//estructuras e outras coisas uteis +#include "util.h" + +int main(int argc, char *argv[]){ + int sair=0, test=-1; + char str[80], *palavra[10]; + int i; + + msg mensagem; + + int fd_servidor, fd_cliente; + + /* VERIFICAR SE EXISTE "CP" NO SERVIDOR(access) */ + if(access("CPservidor", F_OK)!=0){ + printf("[ERRO] O servidor nao esta em execucao!\n"); + exit(1); + }; + /* CRIAR "CP" DO CLIENTE - MINHA (mkfifo) */ + sprintf(mensagem.addrss, "CPcliente_%d", getpid()); + mkfifo(mensagem.addrss, 0600); //0600 READ && WRITE + /* ABRIR "CP" DO SERVIDOR (open - O_WRONLY) */ + fd_servidor = open("CPservidor", O_WRONLY); + + do{ + printf("> "); + fgets(str, 80, stdin); + str[strlen(str)-1]='\0'; + i = 0; + palavra[i]=strtok(str, " "); + while(palavra[i]!=NULL){ + i++; + palavra[i] = strtok(NULL," "); + } + if(palavra[0]!=NULL){ + if(strcmp(palavra[0],"send")==0){ + strcpy(mensagem.titulo, "send"); + strcpy(mensagem.corpo, palavra[1]); + /* ENVIAR PEDIDO PARA "CP" DO SERVIDOR (write) */ + i = write(fd_servidor, &mensagem, sizeof(mensagem)); + } + } + + }while(true); + + /* FECHAR "CP" DO SERVIDOR (close) */ + close(fd_servidor); + /* REMOVER "cp" DO CLIENTE - EU (UNLINK) */ + unlink(mensagem.addrss); +} \ No newline at end of file diff --git a/dec.h b/dec.h index bc1af6a..e3ffbd0 100644 --- a/dec.h +++ b/dec.h @@ -1 +1,2 @@ +void printMenu(void); int obtem_rand(int min, int max); \ No newline at end of file diff --git a/makefile b/makefile index 801ee2d..0db643a 100644 --- a/makefile +++ b/makefile @@ -12,7 +12,11 @@ LINKERFLAG = -lm SRCS := $(wildcard *.c) BINS := $(SRCS:%.c=%) +install: + cp ${BINS} /home/zmiguel/TP + all: ${BINS} + cp ${BINS} /home/zmiguel/TP %: %.o @echo "Checking.." @@ -24,4 +28,5 @@ all: ${BINS} clean: @echo "Cleaning up..." - rm -rvf *.o ${BINS} \ No newline at end of file + rm -rvf *.o ${BINS} + \ No newline at end of file diff --git a/server b/server new file mode 100644 index 0000000..df9f949 Binary files /dev/null and b/server differ diff --git a/server.c b/server.c index c2f17b2..234b29e 100644 --- a/server.c +++ b/server.c @@ -13,7 +13,11 @@ #include "util.h" int main(int argc, char *argv[]){ + int sair=0, mopt=-1, n; + msg mensagem; + + srand(time(NULL)); int fd_servidor; /* VERIFICAR SE EXISTE "CP" DO SERVIDOR (access) -- APENAS UM!!!*/ if(access("CPservidor", F_OK)==0){ @@ -30,9 +34,20 @@ int main(int argc, char *argv[]){ /* Fazer coisas aqui! */ do{ + n = read(fd_servidor,&mensagem, sizeof(mensagem)); + + if(n == 0){ + printf("[SERVER] deu merda!\n"); + sleep(1); + continue; + }else if(strcmp(mensagem.titulo,"send")==0){ + printf("funciona!\n"); + printf("%s\n",mensagem.corpo); + } + }while(true); - printf("[SERVIDOR] SERVIDOR DESLIGADO\n"); + printf("[SERVER] SERVIDOR DESLIGADO\n"); /* FECHAR "CP" DO SERVIDOR - MINHA (close) */ close(fd_servidor); @@ -41,6 +56,14 @@ int main(int argc, char *argv[]){ exit(0); } +void printMenu(void){ + printf("[SERVER] Menu:\n"); + printf("\t1 - coisas\n"); + printf("\t0 - SAIR\n"); + + printf("> "); +} + int obtem_rand(int min, int max){ int random; random = min + (rand() % (max - min + 1)); diff --git a/util.h b/util.h index 6321896..9f5d8af 100644 --- a/util.h +++ b/util.h @@ -10,6 +10,8 @@ typedef struct msgdef int duracao; int time_added; + char addrss[20]; + struct topicdef * topico; struct msgdef * prox; }msg; diff --git a/verificador b/verificador new file mode 100644 index 0000000..f5b68c7 Binary files /dev/null and b/verificador differ