This commit is contained in:
zmiguel.alves@gmail.com 2019-11-14 19:55:36 +00:00
parent 1b67269c36
commit 6e4d86f37d
7 changed files with 35 additions and 7 deletions

BIN
client Normal file

Binary file not shown.

View File

@ -109,6 +109,17 @@ int main(int argc, char *argv[]){
strcpy(msg2sv.cmd, "list"); strcpy(msg2sv.cmd, "list");
/* ENVIAR PEDIDO PARA "CP" DO SERVIDOR (write) */ /* ENVIAR PEDIDO PARA "CP" DO SERVIDOR (write) */
i = write(fd_servidor, &msg2sv, sizeof(msg2sv)); i = write(fd_servidor, &msg2sv, sizeof(msg2sv));
}else if(strcmp(palavra[0],"verifica")==0){
strcpy(msg2sv.cmd, "verifica");
strcpy(msg2sv.opts,palavra[1]);
/* ENVIAR PEDIDO PARA "CP" DO SERVIDOR (write) */
i = write(fd_servidor, &msg2sv, sizeof(msg2sv));
//ler resposta do servidor
/*fd_cliente = open(msg2sv.fifostr,O_RDONLY);
read(fd_cliente,&svResp,sizeof(svResp));
close(fd_cliente);*/
//processar resposta
//printf(svResp.resp);
} }
} }

BIN
server Normal file

Binary file not shown.

View File

@ -27,7 +27,7 @@ int main(int argc, char *argv[]){
int userCounter = 0; int userCounter = 0;
srand(time(NULL)); srand(time(NULL));
int fd_servidor, fd_cliente; int fd_servidor, fd_cliente, fd_child[2];
/* VERIFICAR SE EXISTE "CP" DO SERVIDOR (access) -- APENAS UM!!!*/ /* VERIFICAR SE EXISTE "CP" DO SERVIDOR (access) -- APENAS UM!!!*/
if(access("CPservidor", F_OK)==0){ if(access("CPservidor", F_OK)==0){
printf("[SERVIDOR] Ja existe um servidor!\n"); printf("[SERVIDOR] Ja existe um servidor!\n");
@ -76,7 +76,6 @@ int main(int argc, char *argv[]){
close(fd_cliente); close(fd_cliente);
//fim resposta //fim resposta
} }
}else if(strcmp(clResp.cmd,"ping")==0){ }else if(strcmp(clResp.cmd,"ping")==0){
sprintf(msg2cl.resp,"[SV] Olá %s (%s)\n",getUsernameFromfifo(users,clResp.fifostr), clResp.fifostr); sprintf(msg2cl.resp,"[SV] Olá %s (%s)\n",getUsernameFromfifo(users,clResp.fifostr), clResp.fifostr);
printf("[SERVER] A responder ao Cliente %s",clResp.fifostr); printf("[SERVER] A responder ao Cliente %s",clResp.fifostr);
@ -93,6 +92,22 @@ int main(int argc, char *argv[]){
users=removeUser(users,clResp.fifostr,&userCounter); users=removeUser(users,clResp.fifostr,&userCounter);
printf("[SERVER] Cliente removido!\n"); printf("[SERVER] Cliente removido!\n");
uinit = users; uinit = users;
}else if(strcmp(clResp.cmd,"verifica")==0){
printf("[SERVER] A verificar '%s'\n",clResp.opts);
pipe(fd_child);
switch(fork()){
case 0://child
close(fd_child[1]);
dup2(fd_child[0], STDIN_FILENO);
close(fd_child[0]);
execl("verificador", "./verificador", "words.txt", NULL);
default://me
close(fd_child[0]);
write(fd_child[1], clResp.opts, sizeof(clResp.opts));
close(fd_child[1]);
wait(NULL);
}
} }
}while(sair==0); }while(sair==0);

10
util.h
View File

@ -7,7 +7,7 @@
#define TAM_OPTS 128 #define TAM_OPTS 128
#define TAM_RESP 512 #define TAM_RESP 512
typedef struct{ typedef struct st_mensagem{
int id; int id;
char titulo[TAM_TITULO]; char titulo[TAM_TITULO];
char corpo[TAM_CORPO]; char corpo[TAM_CORPO];
@ -18,14 +18,14 @@ typedef struct{
struct mensagem * prox; struct mensagem * prox;
}mensagem; }mensagem;
typedef struct{ typedef struct st_topic{
int id; int id;
char nome[TAM_NOME]; char nome[TAM_NOME];
struct mensagem * mensg; struct mensagem * mensg;
struct topic * prox; struct topic * prox;
}topic; }topic;
//guardar clientes //guardar clientes
typedef struct{ typedef struct st_clients{
int pid; int pid;
char nome[TAM_NOME]; char nome[TAM_NOME];
char fifostr[TAM_NOME]; char fifostr[TAM_NOME];
@ -40,7 +40,7 @@ struct clmsg{
char corpo[TAM_CORPO]; char corpo[TAM_CORPO];
int duracao; int duracao;
}; };
typedef struct{ typedef struct st_cl2sv{
char fifostr[TAM_NOME]; char fifostr[TAM_NOME];
//base //base
int pid; int pid;
@ -52,7 +52,7 @@ typedef struct{
}cl2sv; }cl2sv;
//estructura de dados servidor --> cliente //estructura de dados servidor --> cliente
typedef struct{ typedef struct st_sv2cl{
int code; int code;
char type[TAM_CMD]; char type[TAM_CMD];
char resp[TAM_RESP]; char resp[TAM_RESP];

BIN
verificador Normal file

Binary file not shown.

View File

@ -34,6 +34,7 @@ int readWordFile(FILE * f, char wdef[][MAXWL], int maxw) {
int checkWord(char * word, char wdef[][MAXWL], int maxw) { int checkWord(char * word, char wdef[][MAXWL], int maxw) {
int i; int i;
for (i=0; i<maxw;i++) for (i=0; i<maxw;i++)
printf("w1 - %s || w2 - %s\n",word,wdef[i]);
if (!strcmp(word,wdef[i])) if (!strcmp(word,wdef[i]))
return 1; return 1;
return 0; return 0;
@ -80,6 +81,7 @@ int main(int argc, char** argv) {
justprinted = 0; justprinted = 0;
} }
} }
printf("w - %s\n",word);
if (!justprinted) if (!justprinted)
printf("%d\n",numhits); printf("%d\n",numhits);
return 0; return 0;