Você está na página 1de 3

/***************************************************** Programa para testar comunicao usando sockets ** servidor teclado ** *****************************************************/ #include "includes.

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{ char tecla, buffer[MAXMSG]; int bytes;

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; }

Você também pode gostar