Advertisement
Guest User

Untitled

a guest
Sep 4th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. cliente.c
  2.  
  3. #include "util.h"
  4.  
  5. pthread_t tid_jogadas, tid_ecra;
  6.  
  7. void * funcJogadas(void * arg){//funcao que envia as jogadas
  8.  
  9. int fd_jogadas, i;
  10.  
  11. jogada jog;
  12.  
  13. fd_jogadas = open(FIFO_JOGADAS, O_RDWR);
  14.  
  15. i = write(fd_jogadas, &jog, sizeof(jog));
  16.  
  17. return NULL;
  18. }
  19.  
  20. void * funcEcra(void * arg){//funcao com ncurses
  21.  
  22. int fd_ecra, i;
  23. pos_jogadores pos;
  24.  
  25. fd_ecra = open(FIFO_ECRA, O_RDWR);
  26.  
  27. i = read(fd_ecra, &pos, sizeof(pos));
  28.  
  29. //NCURSES
  30.  
  31. return NULL;
  32. }
  33.  
  34. void jogadoresDisponiveis(){
  35.  
  36. int i, jogador_escolhido = 0, flag=0, fd, fd_resposta;
  37.  
  38. for(i=0;i<10;i++){
  39. if(jogador[i].pid==0){
  40. printf("Jogador %d\n", i);
  41. }
  42. }
  43.  
  44. do{
  45. flag = 0;
  46. printf("Escolha o seu jogador: ");
  47. scanf("%d", &jogador_escolhido);
  48.  
  49. if(jogador[jogador_escolhido].pid!=0){
  50. printf("Esse jogador ja foi escolhido!\n");
  51. }
  52. else if( jogador_escolhido < 0 || jogador_escolhido > 9){
  53. printf("Esse jogador nao existe!\n");
  54. }
  55. else{
  56. flag=1;
  57. jogador[jogador_escolhido].pid=getpid();
  58. printf("pid %d\n", jogador[jogador_escolhido].pid);
  59. fd_resposta = open(FIFO_JOGADORES, O_RDWR);
  60. i = write(fd_resposta, &jogador, sizeof(jogador));
  61. }
  62. }while(flag==0);
  63. }
  64.  
  65.  
  66. int main(){
  67.  
  68. int fd, i, fd_resposta, res;
  69. login l;
  70. char fifocliente[100];
  71.  
  72. //system("rm ccc*");
  73. l.pid = getpid();
  74.  
  75. sprintf(fifocliente,"ccc%d", l.pid);
  76.  
  77. printf("Username: ");
  78. scanf("%s", l.username);
  79. printf("Password: ");
  80. scanf("%s", l.password);
  81.  
  82. mkfifo(fifocliente, 0600);
  83. fd = open(FIFO_LOGIN, O_WRONLY);
  84. i = write(fd, &l, sizeof(l));
  85.  
  86. fd_resposta = open(fifocliente, O_RDONLY);
  87. i = read(fd_resposta, &l, sizeof(l));
  88. close(fd);
  89. close(fd_resposta);
  90.  
  91. if(l.success==1){
  92. printf("you in ideot\n");
  93. i = read(fd_resposta, &jogador, sizeof(jogador));
  94. for(i=0;i<10;i++)
  95. printf("%d\n", jogador[i].pid);
  96. jogadoresDisponiveis();
  97. res = pthread_create(&tid_ecra, NULL, &funcEcra, NULL);
  98. res = pthread_create(&tid_jogadas, NULL, &funcJogadas, NULL);
  99.  
  100. }
  101. else{
  102. printf("you no in ideot\n");
  103. exit(0);
  104. }
  105. scanf("%d", &i);
  106. close(fd);
  107. close(fd_resposta);
  108. unlink(fifocliente);
  109. }
  110. servidor.c
  111.  
  112. #include "util.h"
  113.  
  114. pthread_t tid_login, tid_cmd, tid_jogadores_conec, tid_jogadores_disp;
  115. pthread_mutex_t lock;
  116.  
  117. void * funcLogin(void * arg){
  118.  
  119. int fd, i, fd_resposta, x = 0;
  120. login l;
  121. FILE *f;
  122. char usernametxt[20], passwordtxt[20], fifocliente[100];
  123.  
  124. f = fopen("login.txt", "rt");
  125.  
  126.  
  127. do{
  128.  
  129. fd = open(FIFO_LOGIN, O_RDWR);
  130. i = read(fd, &l, sizeof(l));
  131. fflush(stdout);
  132. printf("pid conectado-> %d\n",l.pid);
  133. fseek(f,SEEK_SET, 0);
  134. l.success=0;
  135. while(fscanf(f, "%s %s\n", usernametxt, passwordtxt)==2){
  136.  
  137. if(strcmp(usernametxt,l.username)==0 && strcmp(passwordtxt, l.password)==0)
  138. l.success=1;
  139. }
  140.  
  141. if(l.success==1){
  142. sprintf(fifocliente,"ccc%d", l.pid);
  143. fd_resposta = open(fifocliente, O_RDWR);
  144. i = write(fd_resposta, &l, sizeof(l));
  145. i = write(fd_resposta, &jogador, sizeof(jogador));
  146. close(fd);
  147. close(fd_resposta);
  148. }
  149. else if(l.success==0){
  150. sprintf(fifocliente, "ccc%d", l.pid);
  151. fd_resposta = open(fifocliente, O_RDWR);
  152. i = write(fd_resposta, &l, sizeof(l));
  153. close(fd);
  154. close(fd_resposta);
  155. }
  156. }while(x==0);
  157.  
  158. fclose(f);
  159. return NULL;
  160.  
  161. }
  162.  
  163. void * posJogadores(void * arg){
  164.  
  165.  
  166. }
  167.  
  168. void * recebeJogadas(void * arg){
  169.  
  170. int fd_jogadas, i;
  171. jogada jog;
  172.  
  173. fd_jogadas = open(FIFO_JOGADAS, O_RDWR);
  174.  
  175. i = read(fd_jogadas, &jog, sizeof(jog));
  176.  
  177. //Fazer verificacoes e impedimentos(sair do ecra)
  178.  
  179.  
  180.  
  181. }
  182.  
  183. void * atualizaJogadores(void * arg){
  184.  
  185. int fd_jogadores, fd_clientes, i,x=0;
  186. char fifocliente[100];
  187. login l;
  188.  
  189. do{
  190.  
  191. sprintf(fifocliente, "ccc%d", l.pid);
  192. fd_clientes = open(fifocliente, O_RDWR);
  193. i = write(fd_clientes, &jogador, sizeof(jogador));
  194.  
  195.  
  196. fd_jogadores = open(FIFO_JOGADORES, O_RDWR);
  197. i = read(fd_jogadores, &jogador, sizeof(jogador));
  198. }while(x==0);
  199. }
  200. void mostraJogadores(){
  201.  
  202. int i;
  203.  
  204. for(i=0;i<10;i++){
  205. printf("Jogador %d -> ", i);
  206. if(jogador[i].pid==0)
  207. printf("Ninguem\n");
  208. else
  209. printf("%d\n", jogador[i].pid);
  210. }
  211. }
  212.  
  213. int main(){
  214.  
  215. int res, res2, i=0;
  216. login l;
  217. char c = 'a';
  218. char cmd[100], tmp[100], username[20], password[20];
  219. void * ret;
  220.  
  221. mkfifo(FIFO_LOGIN, 0600);
  222. mkfifo(FIFO_JOGADAS, 0600);
  223. mkfifo(FIFO_ECRA, 0600);
  224. mkfifo(FIFO_JOGADORES, 0600);
  225.  
  226. //strcpy("trollao", tmp);
  227.  
  228. res = pthread_create(&tid_login, NULL, &funcLogin, NULL);
  229. if(res!=0)
  230. printf("Shit Happened\n");
  231. res = pthread_create(&tid_jogadores_disp, NULL, &atualizaJogadores, NULL);
  232. if(res!=0)
  233. printf("Oh shit waddup\n");
  234.  
  235. do{
  236.  
  237. if(strcmp("stop",cmd)==0)
  238. pthread_cancel(tid_login);
  239.  
  240. if(strcmp("users", cmd)==0){
  241. mostraJogadores();
  242. }
  243.  
  244. printf("CMD> ");
  245. scanf("%[^\n]", cmd);
  246.  
  247. strncpy(tmp, cmd, 4);
  248.  
  249. if(strcmp("user", tmp)==0){
  250. for(i=0;i<strlen(cmd);i++){
  251. printf("%c", cmd[i]);
  252. }
  253. tmp[0]='\0';
  254. }
  255. }while(strcmp("shutdown", cmd)!=0);
  256.  
  257. }
  258.  
  259. util.h
  260.  
  261. #include <stdio.h>
  262.  
  263. #include <stdlib.h>
  264.  
  265. #include <string.h>
  266.  
  267. #include <unistd.h>
  268.  
  269. #include <sys/stat.h>
  270.  
  271. #include <sys/types.h>
  272.  
  273. #include <fcntl.h>
  274.  
  275. #include <pthread.h>
  276.  
  277. #define TAM 20
  278.  
  279. #define FIFO_LOGIN "fifoLogin"
  280.  
  281. #define FIFO_JOGADAS "fifojogadas"
  282.  
  283. #define FIFO_ECRA "fifoecra"
  284.  
  285. #define FIFO_JOGADORES "fifojogadores"
  286.  
  287.  
  288.  
  289. typedef struct {
  290.  
  291.  
  292.  
  293. char username[TAM], password[TAM];
  294.  
  295. int pid;
  296.  
  297.  
  298.  
  299. }registo;
  300.  
  301.  
  302.  
  303. typedef struct {
  304.  
  305.  
  306.  
  307. char username[TAM], password[TAM];
  308.  
  309. int pid, success;
  310.  
  311.  
  312.  
  313. }login;
  314.  
  315.  
  316.  
  317. typedef struct{
  318.  
  319.  
  320.  
  321. int x_pos, y_pos, pid;
  322.  
  323.  
  324.  
  325. }pos_jogadores;
  326.  
  327.  
  328.  
  329. typedef struct{
  330.  
  331.  
  332.  
  333. int ch, pid;
  334.  
  335.  
  336.  
  337. }jogada;
  338.  
  339.  
  340.  
  341. pos_jogadores jogador[10] = { {10,1, 0} , {7,10, 0}, {15,10, 0}, {6,22, 0} , {15,22, 0}, {10,49, 0} ,{10,41, 0}, {6,34, 0}, {15,34, 0}, {10,29, 0} };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement