Guest User

Untitled

a guest
Jul 16th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. ## ~/Dropbox/Universidade/Linguagem IV/chat/chat 0.8/servidor/servidor.h [c++]
  2. #ifndef _SERVIDOR_H
  3. #define _SERVIDOR_H
  4.  
  5.  
  6. #include <stdio.h> /* sprintf */
  7. #include <stdlib.h> /* malloc, realloc */
  8. #include <string.h> /* strcpy, strcmp */
  9. #include <netinet/in.h> /* struct sockaddr_in */
  10. #include <pthread.h> /* pthread_t, pthread_create */
  11.  
  12.  
  13. /* Tamanho maximo de caracteres do nickname */
  14. #define LEN_NICKNAME 30
  15.  
  16. /* Tamanho maximo de caracteres do comando */
  17. #define LEN_COMMAND 9
  18.  
  19. /* Tamanho maximo de caracteres da mensagem */
  20. #define LEN_MESSAGE 247
  21.  
  22. /* Tamanho maximo de caracteres do texto (LEN_COMMAND + LEN_MESSAGE) */
  23. #define LEN_TEXT 256
  24.  
  25.  
  26. /* Numero de usuarios em cada bloco */
  27. #define BLOCK_USERS 2
  28.  
  29. /* Numero da porta onde sera realizada a comunicacao */
  30. #define PORT 8450
  31.  
  32.  
  33. /**
  34. * Estrutura que armazena dados referentes aos usuarios do chat.
  35. * Essa estrutura precisa ser inicializada.
  36. */
  37. struct user
  38. {
  39. char nickname[LEN_NICKNAME];
  40. int id;
  41. char ip[32];
  42. struct beanchat *chat;
  43. };
  44.  
  45.  
  46. /**
  47. * Estrutura que armazena dados referentes aos chat server.
  48. * Essa estrutura precisa ser inicializada.
  49. */
  50. struct beanchat
  51. {
  52. struct user *users;
  53. int countUsers;
  54. };
  55.  
  56.  
  57. void beanchatserver();
  58.  
  59.  
  60. /**
  61. * Rotina que espera novos clientes conectarem. Quando um client
  62. * conecta entao receptionist cria um novo socket para a comunicacao
  63. * com este. Realiza os pedidos do cliente conectados.
  64. *
  65. * @param int localsocket
  66. * @return void
  67. */
  68. void receptionist(int localsocket);
  69.  
  70.  
  71. /**
  72. * Realiza a comunicacao diretamente com um cliente atendendo a
  73. * seus pesdidos. Os pedidos devem ser enviados para o servidor
  74. * no formado COMANDO:ARGUMANTOS. Os comandos poderao ser:
  75. * - identify (identifica o usuario com o nickname)
  76. * - send (envia uma mensagem para os outros usuarios)
  77. *
  78. * @param struc user *userchat
  79. * @return void
  80. */
  81. void *dispatcher(void *userchat);
  82.  
  83.  
  84. /**
  85. * Verifica se ja existe um usuario com o mesmo nickname informado.
  86. * Se nao existir entao armazena o usuario no chat e retorna 1. Se
  87. * existir retorna 0.
  88. *
  89. * @param struct user *userchat
  90. * @param char *nickname
  91. * @return int
  92. */
  93. int identify(struct user *userchat, char nickname[LEN_NICKNAME]);
  94.  
  95.  
  96. /**
  97. * Realiza o envio de uma mensagem de um usuario para
  98. * todos os outros conectados com o servidor.
  99. *
  100. * @param struct user *userchat
  101. * @param char *message
  102. * @return void
  103. */
  104. void sendMessage(struct user *userchat, char *message);
  105.  
  106.  
  107. /**
  108. * Atribui a command todos os caracteres que existem
  109. * antes do primeiro dois pontos.
  110. *
  111. * @param char *text
  112. * @param char *message
  113. * @return void
  114. */
  115. void getCommand(char *text, char *command);
  116.  
  117.  
  118. /**
  119. * Atribui a message todos os caracteres que existem
  120. * apos o primeiro dois pontos.
  121. *
  122. * @param char *text
  123. * @param char *message
  124. * @return void
  125. */
  126. void getMessage(char *text, char *message);
  127.  
  128.  
  129. #endif
  130.  
  131. ## server.h [c++]
  132. #ifndef _SERVER_H
  133. #define _SERVER_H
  134.  
  135. #include <stdio.h>
  136. #include <stdlib.h>
  137. #include <string.h>
  138. #include <netinet/in.h>
  139. #include <pthread.h>
  140.  
  141. struct user
  142. {
  143. int ip[32];
  144. char nickname[LEN_NICKNAME];
  145. struct beanchat *chat;
  146. struct user user_left;
  147. struct user user_right;
  148. };
  149.  
  150. struct beanchat
  151. {
  152. struct user *users;
  153. int amount;
  154. };
  155.  
  156. #endif
Add Comment
Please, Sign In to add comment