Meta 1 Final
Registo de cliente por argumento linha comandos
This commit is contained in:
parent
3da12c53b5
commit
e98a64ef82
116
client.c
116
client.c
|
@ -36,33 +36,95 @@ int main(int argc, char *argv[]){
|
||||||
fd_servidor = open("CPservidor", O_WRONLY);
|
fd_servidor = open("CPservidor", O_WRONLY);
|
||||||
|
|
||||||
//registar cliente no servidor
|
//registar cliente no servidor
|
||||||
do{
|
if(argc == 2){// nome de utilizador inserido como argumento
|
||||||
printf("Nome de Utilizador: ");
|
char uname[32];
|
||||||
//get username
|
i=0;
|
||||||
fgets(username,32,stdin);
|
do{
|
||||||
//build message to server
|
strcpy(uname,argv[1]);
|
||||||
strcpy(msg2sv.cmd,"register");
|
if(i==0){//registo username sem numeros
|
||||||
strcpy(msg2sv.opts,username);
|
strcpy(msg2sv.cmd,"register");
|
||||||
//send message
|
strcpy(msg2sv.opts,uname);
|
||||||
write(fd_servidor, &msg2sv, sizeof(msg2sv));
|
//send message
|
||||||
//read reply
|
write(fd_servidor, &msg2sv, sizeof(msg2sv));
|
||||||
fd_cliente = open(msg2sv.fifostr,O_RDONLY);
|
//read reply
|
||||||
read(fd_cliente,&svResp,sizeof(svResp));
|
fd_cliente = open(msg2sv.fifostr,O_RDONLY);
|
||||||
close(fd_cliente);
|
read(fd_cliente,&svResp,sizeof(svResp));
|
||||||
//process reply
|
close(fd_cliente);
|
||||||
if(svResp.code==1){
|
//process reply
|
||||||
printf("[CLIENT] Cliente registado no servidor!\n");
|
if(svResp.code==1){
|
||||||
}else if(svResp.code==2){
|
printf("[CLIENT] Cliente registado no servidor!\n");
|
||||||
printf("[ERROR] Nome de Utilizador ja existente\n");
|
printf("[CLIENT] O Teu Username: %s\n",uname);
|
||||||
}else{
|
}else if(svResp.code==2){
|
||||||
printf("[ERROR] Erro inesperado...\nA sair...\n");
|
printf("[ERROR] Nome de Utilizador ja existente...\n");
|
||||||
/* FECHAR "CP" DO SERVIDOR (close) */
|
printf("[CLIENT] A tentar outro username...\n");
|
||||||
close(fd_servidor);
|
i++;
|
||||||
/* REMOVER "cp" DO CLIENTE - EU (UNLINK) */
|
}else{
|
||||||
unlink(msg2sv.fifostr);
|
printf("[ERROR] Erro inesperado...\nA sair...\n");
|
||||||
exit(1);
|
/* FECHAR "CP" DO SERVIDOR (close) */
|
||||||
}
|
close(fd_servidor);
|
||||||
}while(svResp.code!=1);
|
/* REMOVER "cp" DO CLIENTE - EU (UNLINK) */
|
||||||
|
unlink(msg2sv.fifostr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}else{// username ja existente... adicionar numeros
|
||||||
|
sprintf(uname,"%s%d", argv[1], i); //gerar username novo
|
||||||
|
//registar
|
||||||
|
strcpy(msg2sv.cmd,"register");
|
||||||
|
strcpy(msg2sv.opts,uname);
|
||||||
|
//send message
|
||||||
|
write(fd_servidor, &msg2sv, sizeof(msg2sv));
|
||||||
|
//read reply
|
||||||
|
fd_cliente = open(msg2sv.fifostr,O_RDONLY);
|
||||||
|
read(fd_cliente,&svResp,sizeof(svResp));
|
||||||
|
close(fd_cliente);
|
||||||
|
//process reply
|
||||||
|
if(svResp.code==1){
|
||||||
|
printf("[CLIENT] Cliente registado no servidor!\n");
|
||||||
|
printf("[CLIENT] O Teu Username: %s\n",uname);
|
||||||
|
}else if(svResp.code==2){
|
||||||
|
printf("[ERROR] Nome de Utilizador ja existente...\n");
|
||||||
|
printf("[CLIENT] A tentar outro username...\n");
|
||||||
|
i++;
|
||||||
|
}else{
|
||||||
|
printf("[ERROR] Erro inesperado...\nA sair...\n");
|
||||||
|
/* FECHAR "CP" DO SERVIDOR (close) */
|
||||||
|
close(fd_servidor);
|
||||||
|
/* REMOVER "cp" DO CLIENTE - EU (UNLINK) */
|
||||||
|
unlink(msg2sv.fifostr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}while(svResp.code!=1);
|
||||||
|
}else{// argumentos diferente de 2
|
||||||
|
do{
|
||||||
|
printf("Nome de Utilizador: ");
|
||||||
|
//get username
|
||||||
|
fgets(username,32,stdin);
|
||||||
|
username[strlen(username)-1]='\0';
|
||||||
|
//build message to server
|
||||||
|
strcpy(msg2sv.cmd,"register");
|
||||||
|
strcpy(msg2sv.opts,username);
|
||||||
|
//send message
|
||||||
|
write(fd_servidor, &msg2sv, sizeof(msg2sv));
|
||||||
|
//read reply
|
||||||
|
fd_cliente = open(msg2sv.fifostr,O_RDONLY);
|
||||||
|
read(fd_cliente,&svResp,sizeof(svResp));
|
||||||
|
close(fd_cliente);
|
||||||
|
//process reply
|
||||||
|
if(svResp.code==1){
|
||||||
|
printf("[CLIENT] Cliente registado no servidor!\n");
|
||||||
|
}else if(svResp.code==2){
|
||||||
|
printf("[ERROR] Nome de Utilizador ja existente\n");
|
||||||
|
}else{
|
||||||
|
printf("[ERROR] Erro inesperado...\nA sair...\n");
|
||||||
|
/* FECHAR "CP" DO SERVIDOR (close) */
|
||||||
|
close(fd_servidor);
|
||||||
|
/* REMOVER "cp" DO CLIENTE - EU (UNLINK) */
|
||||||
|
unlink(msg2sv.fifostr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}while(svResp.code!=1);
|
||||||
|
}
|
||||||
|
|
||||||
do{
|
do{
|
||||||
//sinais
|
//sinais
|
||||||
|
|
1
server.c
1
server.c
|
@ -60,7 +60,6 @@ int main(int argc, char *argv[]){
|
||||||
printf("funciona!\n");
|
printf("funciona!\n");
|
||||||
printf("%s\n",clResp.opts);
|
printf("%s\n",clResp.opts);
|
||||||
}else if(strcmp(clResp.cmd,"register")==0){
|
}else if(strcmp(clResp.cmd,"register")==0){
|
||||||
clResp.opts[strlen(clResp.opts)-1]='\0';
|
|
||||||
if(verifyUserName(users,&userCounter,clResp.opts)==1){
|
if(verifyUserName(users,&userCounter,clResp.opts)==1){
|
||||||
msg2cl.code=2;
|
msg2cl.code=2;
|
||||||
//responde
|
//responde
|
||||||
|
|
Loading…
Reference in New Issue