cliente<>server comms
This commit is contained in:
parent
f065c60ff7
commit
d12476b298
|
@ -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
1
dec.h
|
@ -1 +1,2 @@
|
||||||
|
void printMenu(void);
|
||||||
int obtem_rand(int min, int max);
|
int obtem_rand(int min, int max);
|
7
makefile
7
makefile
|
@ -12,7 +12,11 @@ LINKERFLAG = -lm
|
||||||
SRCS := $(wildcard *.c)
|
SRCS := $(wildcard *.c)
|
||||||
BINS := $(SRCS:%.c=%)
|
BINS := $(SRCS:%.c=%)
|
||||||
|
|
||||||
|
install:
|
||||||
|
cp ${BINS} /home/zmiguel/TP
|
||||||
|
|
||||||
all: ${BINS}
|
all: ${BINS}
|
||||||
|
cp ${BINS} /home/zmiguel/TP
|
||||||
|
|
||||||
%: %.o
|
%: %.o
|
||||||
@echo "Checking.."
|
@echo "Checking.."
|
||||||
|
@ -24,4 +28,5 @@ all: ${BINS}
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo "Cleaning up..."
|
@echo "Cleaning up..."
|
||||||
rm -rvf *.o ${BINS}
|
rm -rvf *.o ${BINS}
|
||||||
|
|
25
server.c
25
server.c
|
@ -13,7 +13,11 @@
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
|
int sair=0, mopt=-1, n;
|
||||||
|
|
||||||
|
msg mensagem;
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
int fd_servidor;
|
int fd_servidor;
|
||||||
/* 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){
|
||||||
|
@ -30,9 +34,20 @@ int main(int argc, char *argv[]){
|
||||||
/* Fazer coisas aqui! */
|
/* Fazer coisas aqui! */
|
||||||
do{
|
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);
|
}while(true);
|
||||||
|
|
||||||
printf("[SERVIDOR] SERVIDOR DESLIGADO\n");
|
printf("[SERVER] SERVIDOR DESLIGADO\n");
|
||||||
|
|
||||||
/* FECHAR "CP" DO SERVIDOR - MINHA (close) */
|
/* FECHAR "CP" DO SERVIDOR - MINHA (close) */
|
||||||
close(fd_servidor);
|
close(fd_servidor);
|
||||||
|
@ -41,6 +56,14 @@ int main(int argc, char *argv[]){
|
||||||
exit(0);
|
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 obtem_rand(int min, int max){
|
||||||
int random;
|
int random;
|
||||||
random = min + (rand() % (max - min + 1));
|
random = min + (rand() % (max - min + 1));
|
||||||
|
|
2
util.h
2
util.h
|
@ -10,6 +10,8 @@ typedef struct msgdef
|
||||||
int duracao;
|
int duracao;
|
||||||
int time_added;
|
int time_added;
|
||||||
|
|
||||||
|
char addrss[20];
|
||||||
|
|
||||||
struct topicdef * topico;
|
struct topicdef * topico;
|
||||||
struct msgdef * prox;
|
struct msgdef * prox;
|
||||||
}msg;
|
}msg;
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue