main.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include "json.h"
  5. #include "arraylist.h"
  6. #include "server.h"
  7. #include "error.h"
  8. #include "bomberstudent_server.h"
  9. /* --- Extern --- */
  10. extern Error error;
  11. int parse(){
  12. char str[200];
  13. char* key = NULL;
  14. char* val = NULL;
  15. JsonParser json;
  16. strcpy(str, "{\"name\" : \"Jack\", \"age\": 27, \"test\": true, \"tab\": [1, 2, 3, 4, 5], \"obj\": {\"name\" : \"Jack\", \"age\": 27}, \"nb\": 27.8 }");
  17. //Parse
  18. int a = json_parse(&json, str);
  19. printf("Parse : %d\n", a);
  20. //Affiche toutes les clefs : valeurs
  21. for(int i = 0; i < json.elt; i++){
  22. key = key_index(&json, i);
  23. val = get_index(&json, i);
  24. printf("%s : %s\n", key, val);
  25. }
  26. //Recup un nombre
  27. printf("Double : %f %.2f | Int : %d %d\n", get_number(&json, "age"), get_number(&json, "nb"), get_integer(&json, "age"), get_integer(&json, "nb"));
  28. //Recup boolean
  29. printf("Bool : %d %d\n", get_boolean(&json, "test"), get_boolean(&json, "tab"));
  30. //Recup obj
  31. JsonParser* js;
  32. js = get_object(&json, "obj");
  33. if(js != NULL){
  34. int key_i = get_pos(js, "name");
  35. printf("JSON : %s %s, age %d\n", key_index(js, key_i), get_value(js, "name"), get_integer(js, "age"));
  36. } else {
  37. printf("JSON : Error");
  38. }
  39. //Supprime
  40. free(key);
  41. free(val);
  42. clean_json_parser(&json);
  43. return 0;
  44. }
  45. int encode(){
  46. //Encode
  47. JsonEncoder json;
  48. ini_encoder(&json);
  49. add_string(&json, "name", "robert");
  50. add_number(&json, "nb", 25.698, 2);
  51. add_integer(&json, "int", 846);
  52. add_string(&json, "aze", "rty");
  53. add_boolean(&json, "bool", false);
  54. add_value(&json, "\"test\": \"aze\nrty\"");
  55. printf("Json\n");
  56. printf("%s\n", json_encode(&json));
  57. //Encode un JsonEncoder
  58. JsonEncoder json2;
  59. ini_encoder(&json2);
  60. add_integer(&json2, "vie", 42);
  61. add_object(&json2, "obj", json);
  62. printf("\nJson 2\n");
  63. printf("%s\n", json_encode(&json2));
  64. //Decode
  65. JsonParser parser, *parser2;
  66. char* key, *val;
  67. json_parse(&parser, json_encode(&json2));
  68. //Affiche toutes les clefs : valeurs
  69. printf("\nParser\n");
  70. for(int i = 0; i < parser.elt; i++){
  71. key = key_index(&parser, i);
  72. val = get_index(&parser, i);
  73. printf("%s : %s\n", key, val);
  74. }
  75. //Lecture du sous json
  76. parser2 = get_object(&parser, "obj");
  77. //Affiche toutes les clefs : valeurs
  78. printf("\nParser 2\n");
  79. for(int i = 0; i < parser2->elt; i++){
  80. key = key_index(parser2, i);
  81. val = get_index(parser2, i);
  82. printf("%s : %s\n", key, val);
  83. }
  84. //Clean
  85. clean_json_encoder(&json);
  86. clean_json_encoder(&json2);
  87. clean_json_parser(&parser);
  88. return 0;
  89. }
  90. int func(char* arg){
  91. printf("Func : %s\n", arg);
  92. return EXIT_SUCCESS;
  93. }
  94. int tion(char* arg){
  95. printf("Tion : %s\n", arg);
  96. return EXIT_SUCCESS;
  97. }
  98. int array_list(){
  99. /*arraylist al;
  100. arraylist_ini(&al);
  101. arraylist_add(&al, "func1", func);
  102. arraylist_add(&al, "func2", tion);
  103. printf("%d\n", arraylist_call(&al, "func2", "Pouet"));
  104. printf("%d\n", arraylist_call(&al, "func1", "Loul"));
  105. printf("%d\n", arraylist_call(&al, "func3", "Nop"));*/
  106. return 0;
  107. }
  108. int serv(){
  109. char str[BUFFER_SIZE];
  110. Server s = server_create_tcp();
  111. s->server_bind(s, 8080);
  112. s->server_accept(s);
  113. s->server_receive(s, str, BUFFER_SIZE);
  114. printf("%s\n", str);
  115. server_close_client(s);
  116. server_close(s);
  117. s = server_create_udp();
  118. s->server_bind(s, 8080);
  119. s->server_receive(s, str, BUFFER_SIZE);
  120. printf("%s\n", str);
  121. server_close(s);
  122. return 0;
  123. }
  124. int serv_udp(){
  125. char str[BUFFER_SIZE];
  126. Server s = server_create_udp();
  127. s->server_bind(s, 18624);
  128. s->server_receive(s, str, BUFFER_SIZE);
  129. s->server_send(s, "i'm a bomberstudent server");
  130. printf("%s\n", str);
  131. server_close(s);
  132. return 0;
  133. }
  134. int serv_tcp(){
  135. char str[BUFFER_SIZE];
  136. Server s = server_create_tcp();
  137. s->server_bind(s, 18642);
  138. s->server_accept(s);
  139. s->server_receive(s, str, BUFFER_SIZE);
  140. printf("%s\n", str);
  141. s->server_send(s, "Hello");
  142. server_close_client(s);
  143. server_close(s);
  144. return 0;
  145. }
  146. int main(){
  147. //return parse();
  148. //return encode();
  149. //return array_list();
  150. //return serv();
  151. //return serv_udp();
  152. //return serv_tcp();
  153. error_finit("bomberstudent_server.log");
  154. ini_server();
  155. if(!launch_udp_server(PORT_UDP)){
  156. error.print("Impossible de démarrer le serveur");
  157. error.exit_err();
  158. }
  159. if(!launch_tcp_server(PORT_TCP)){
  160. error.print("Impossible de démarrer le serveur");
  161. error.exit_err();
  162. }
  163. sleep(30);
  164. error.exit();
  165. }