Escolar Documentos
Profissional Documentos
Cultura Documentos
h" #define MAXMSG 2 /* =====================Funcoes teclado==================== */ #define CLOCK_TICK_RATE 1193182 /* Frequncia do oscilador do chip i8254 da placa me, #define ESC 27 /* Valor decimal ASCII da tecla de sada do programa */
/*======================Fim das Funcoes de Teclado========================*/ /* Rotina geral de tratamento de erro fatal escreve a mensagem e termina o progr void erro_fatal(char *mensagem){ perror(mensagem); exit(EXIT_FAILURE); } /*Funo cria socket para o servidor*/ int cria_soquete_serv(int porta){ int sock, b; struct sockaddr_in nome; /* Cria um soquete */ sock=socket(PF_INET, SOCK_STREAM, 0);
if(sock < 0) erro_fatal("socket"); /* Preenche os campos da estrutura tipo struct sockaddr_in */ nome.sin_family=AF_INET; /* Selecona protocolo IPv4 */ nome.sin_port=htons(porta); /* Numero da porta de servio */ nome.sin_addr.s_addr=htonl(INADDR_ANY); /* Aceita conexes vindas de qualquer IP /* bind: Liga um socket a uma porta de servico */ b=bind(sock, (struct sockaddr *)&nome, sizeof(nome)); if(b<0) erro_fatal("bind"); if(listen(sock,1)<0) return sock; } erro_fatal("socket");
char recebe_do_cliente(int filedes){ char buffer[MAXMSG]; int nbytes; nbytes = recv(filedes, buffer, MAXMSG-1,0); if(nbytes<0) erro_fatal("recv"); if(nbytes==0) return -1; return buffer[0]; } int envia_pro_cliente(int filedes, char *msg){ int nbytes; nbytes=send(filedes, msg, strlen(msg)+1,0); if(nbytes<0) erro_fatal("send"); return nbytes; }
int main(int argc, char **argv){ if(argc == 1){ printf("Faltou dizer a porta a ser escutada\n"); exit(0); }else if(argc == 2){ int PORT; PORT= atoi(argv[1]); int sock, fd_sock; struct sockaddr_in clientname; socklen_t size; /* Cria um socket para receber o contato inicial com um cliente */ sock=cria_soquete_serv(PORT); printf("Socket inicial: handle=%d\n",sock); size=sizeof(clientname); /* Aceita a conexao e cria um socket para comunicar-se com este cliente */ fd_sock=accept(sock, (struct sockaddr *)&clientname, &size);
if(fd_sock < 0) erro_fatal("accept"); fprintf(stderr, "Servidor: aceitei conexao do host \"%s\", handle=%d\n", inet_nt
do{ tecla=recebe_do_cliente(fd_sock); switch(tecla){ //Som do Sistema: case 'z': // Diminui o som do sistema a 0% system ("amixer set Master 0"); break; case 'x': // Regula o som do sistema a 50% system ("amixer set Master 50"); break; case 'c': // Aumenta o som do sistema a 100% system ("amixer set Master 100"); break; //Esmaecer video case 'b': // Diminui o brilho do monitor a 1% system ("xrandr --output LVDS1 --brightness 0.1"); break; case 'n': // Regula o brilho do monitor a 50% system ("xrandr --output LVDS1 --brightness 0.5"); break; case 'm': // Aumenta o brilho do monitor a 100% system ("xrandr --output LVDS1 --brightness 1.0"); break;
//Ejetar Bandeja: case 'a': // Ejeta o driver system ("eject"); break; case 's': // Recolhe o drive, em caso de notebook o comando no se system ("eject -t"); break; } }while(tecla != 'q'); closesocket(sock); break; }while( 1 ); }else return 0; }