Browse Source

Ajout fonction pour connaitre le nombre de client dans la liste

Arthur Brandao 6 years ago
parent
commit
dd40697fe4
3 changed files with 193 additions and 0 deletions
  1. 4 0
      Serveur/client.c
  2. 1 0
      Serveur/client.h
  3. 188 0
      Serveur/test.c

+ 4 - 0
Serveur/client.c

@@ -89,4 +89,8 @@ void clean_clientlist(){
     }
     clist.length = 0;
     clist.tab = NULL;
+}
+
+int get_number_client(){
+    return clist.length;
 }

+ 1 - 0
Serveur/client.h

@@ -34,6 +34,7 @@ int add_client(Server, Server);
 Client* get_client(int);
 void remove_client(int);
 void clean_clientlist();
+int get_number_client();
 
 #endif /* CLIENT_H */
 

+ 188 - 0
Serveur/test.c

@@ -0,0 +1,188 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "json.h"
+#include "arraylist.h"
+#include "server.h"
+#include "error.h"
+#include "bomberstudent_server.h"
+#include "client.h"
+
+/* --- Extern --- */
+extern Error error;
+
+int parse(){
+    char str[200];
+    char* key = NULL;
+    char* val = NULL;
+    JsonParser json;
+    strcpy(str, "{\"name\" : \"Jack\", \"age\": 27, \"test\": true, \"tab\": [1, 2, 3, 4, 5], \"obj\": {\"name\" : \"Jack\", \"age\": 27}, \"nb\": 27.8 }");
+    //Parse
+    int a = json_parse(&json, str);
+    printf("Parse : %d\n", a);
+    //Affiche toutes les clefs : valeurs
+    for(int i = 0; i < json.elt; i++){
+        key = key_index(&json, i);
+        val = get_index(&json, i);
+        printf("%s : %s\n", key, val);
+    }
+    //Recup un nombre
+    printf("Double : %f %.2f | Int : %d %d\n", get_number(&json, "age"), get_number(&json, "nb"), get_integer(&json, "age"), get_integer(&json, "nb"));
+    //Recup boolean
+    printf("Bool : %d %d\n", get_boolean(&json, "test"), get_boolean(&json, "tab"));
+    //Recup obj
+    JsonParser* js;
+    js = get_object(&json, "obj");
+    if(js != NULL){
+        int key_i = get_pos(js, "name");
+        printf("JSON : %s %s, age %d\n", key_index(js, key_i), get_value(js, "name"), get_integer(js, "age"));
+    } else {
+        printf("JSON : Error");
+    }
+    //Supprime
+    free(key);
+    free(val);
+    clean_json_parser(&json);
+    return 0;
+}
+
+int encode(){
+    //Encode
+    JsonEncoder json;
+    ini_encoder(&json);
+    add_string(&json, "name", "robert");
+    add_number(&json, "nb", 25.698, 2);
+    add_integer(&json, "int", 846);
+    add_string(&json, "aze", "rty");
+    add_boolean(&json, "bool", false);
+    add_value(&json, "\"test\": \"aze\nrty\"");
+    printf("Json\n");
+    printf("%s\n", json_encode(&json));
+    
+    //Encode un JsonEncoder
+    JsonEncoder json2;
+    ini_encoder(&json2);
+    add_integer(&json2, "vie", 42);
+    add_object(&json2, "obj", json);
+    printf("\nJson 2\n");
+    printf("%s\n", json_encode(&json2));
+    
+    //Decode
+    JsonParser parser, *parser2;
+    char* key, *val;
+    json_parse(&parser, json_encode(&json2));
+    //Affiche toutes les clefs : valeurs
+    printf("\nParser\n");
+    for(int i = 0; i < parser.elt; i++){
+        key = key_index(&parser, i);
+        val = get_index(&parser, i);
+        printf("%s : %s\n", key, val);
+    }
+    //Lecture du sous json
+    parser2 = get_object(&parser, "obj");
+    //Affiche toutes les clefs : valeurs
+    printf("\nParser 2\n");
+    for(int i = 0; i < parser2->elt; i++){
+        key = key_index(parser2, i);
+        val = get_index(parser2, i);
+        printf("%s : %s\n", key, val);
+    }
+    
+    //Clean
+    clean_json_encoder(&json);
+    clean_json_encoder(&json2);
+    clean_json_parser(&parser);
+    
+    return 0;
+}
+
+int serv(){
+    char str[BUFFER_SIZE];
+    
+    Server s = server_create_tcp();
+    s->server_bind(s, 8080);
+    s->server_accept(s);
+    s->server_receive(s, str, BUFFER_SIZE);
+    printf("%s\n", str);
+    server_close_client(s);
+    server_close(s);
+    
+    s = server_create_udp();
+    s->server_bind(s, 8080);
+    s->server_receive(s, str, BUFFER_SIZE);
+    printf("%s\n", str);
+    server_close(s);
+    
+    return 0;
+}
+
+int serv_udp(){
+    char str[BUFFER_SIZE];
+    Server s = server_create_udp();
+    s->server_bind(s, 18624);
+    s->server_receive(s, str, BUFFER_SIZE);
+    s->server_send(s, "i'm a bomberstudent server");
+    printf("%s\n", str);
+    server_close(s);
+    
+    return 0;
+}
+
+int serv_tcp(){
+    char str[BUFFER_SIZE]; 
+    Server s = server_create_tcp();
+    s->server_bind(s, 18642);
+    s->server_accept(s);
+    s->server_receive(s, str, BUFFER_SIZE);
+    printf("%s\n", str);
+    s->server_send(s, "Hello");
+    server_close_client(s);
+    server_close(s);
+    
+    return 0;
+}
+
+int handler(int cliId, JsonParser* jp){
+    printf("Handler : %d - %s\n", cliId, get_value(jp, "key"));
+    JsonEncoder je;
+    ini_encoder(&je);
+    add_integer(&je, "code", 200);
+    add_string(&je, "etat", "ok");
+    send_client(cliId, &je);
+    return 1;
+}
+
+void notify(){
+    Client* cli = get_client(0);
+    JsonEncoder je;
+    ini_encoder(&je);
+    add_string(&je, "etat", "ok");
+    add_integer(&je, "value", 42);
+    notify_client(cli, "POST", "test", &je);
+}
+
+int main(){
+    //return parse();
+    //return encode();
+    //return serv();
+    //return serv_udp();
+    //return serv_tcp();
+    
+    //*
+    error_finit("bomberstudent_server.log");
+    ini_server();
+    add_handler("POST", "aze/rty", handler);
+    if(!launch_udp_server(PORT_UDP)){
+        error.print("Impossible de démarrer le serveur");
+        error.exit_err();
+    }
+    if(!launch_tcp_server(PORT_TCP)){
+        error.print("Impossible de démarrer le serveur");
+        error.exit_err();
+    }
+    sleep(10);
+    notify();
+    sleep(15);
+    error.exit();
+    //*/
+}