cliente<>server comms

This commit is contained in:
zmiguel.alves@gmail.com 2019-11-11 17:58:27 +00:00
parent f065c60ff7
commit d12476b298
8 changed files with 93 additions and 2 deletions

BIN
client Normal file

Binary file not shown.

60
client.c Normal file
View File

@ -0,0 +1,60 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <ncurses.h>
//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);
}

1
dec.h
View File

@ -1 +1,2 @@
void printMenu(void);
int obtem_rand(int min, int max);

View File

@ -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}
rm -rvf *.o ${BINS}

BIN
server Normal file

Binary file not shown.

View File

@ -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));

2
util.h
View File

@ -10,6 +10,8 @@ typedef struct msgdef
int duracao;
int time_added;
char addrss[20];
struct topicdef * topico;
struct msgdef * prox;
}msg;

BIN
verificador Normal file

Binary file not shown.