Browse Source

:art: Amelioration code

Arthur Brandao 6 years ago
parent
commit
62598aacaa
5 changed files with 36 additions and 13 deletions
  1. 2 1
      Serveur/error.c
  2. 1 0
      Serveur/error.h
  3. 5 4
      Serveur/server.h
  4. 20 5
      Serveur/server_tcp.c
  5. 8 3
      Serveur/server_udp.c

+ 2 - 1
Serveur/error.c

@@ -25,7 +25,8 @@ char* serrlib[] = {
     "Erreur lors l'acceptation d'une connexion TCP",
     "Erreur lors l'acceptation d'une connexion TCP",
     "Erreur lors de la reception des données",
     "Erreur lors de la reception des données",
     "Erreur lors de l'envoi des données",
     "Erreur lors de l'envoi des données",
-    "Erreur lors de la fermeture de la socket"
+    "Erreur lors de la fermeture de la socket",
+    "Erreur mauvais type de socket"
 };
 };
 Error error;
 Error error;
 
 

+ 1 - 0
Serveur/error.h

@@ -31,6 +31,7 @@
 #define SERECEIVE 4
 #define SERECEIVE 4
 #define SESEND 5
 #define SESEND 5
 #define SECLOSE 6
 #define SECLOSE 6
+#define SETYPE 7
 
 
 /* --- Structure --- */
 /* --- Structure --- */
 typedef struct{
 typedef struct{

+ 5 - 4
Serveur/server.h

@@ -12,6 +12,7 @@
 #include <sys/types.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include <arpa/inet.h>
+#include "constante.h"
 
 
 /* --- Constantes --- */
 /* --- Constantes --- */
 #define SERV_UDP 1
 #define SERV_UDP 1
@@ -28,16 +29,16 @@ struct server{
 	struct sockaddr_in client; /* Adresse du client */
 	struct sockaddr_in client; /* Adresse du client */
 	socklen_t addr;
 	socklen_t addr;
 	/* Pointeur de fonction */
 	/* Pointeur de fonction */
-	void (*server_bind)(Server, int);
+	boolean (*server_bind)(Server, int);
 	ssize_t (*server_receive)(Server, char*, size_t);
 	ssize_t (*server_receive)(Server, char*, size_t);
-	void (*server_send)(Server, char*);
-	void (*server_accept)(Server);
+	boolean (*server_send)(Server, char*);
+	boolean (*server_accept)(Server);
 };
 };
 
 
 /* --- Fonction --- */
 /* --- Fonction --- */
 Server server_create_udp();
 Server server_create_udp();
 Server server_create_tcp();
 Server server_create_tcp();
 void server_close(Server);
 void server_close(Server);
-void server_close_client(Server);
+boolean server_close_client(Server);
 
 
 #endif /* SERVER_H */
 #endif /* SERVER_H */

+ 20 - 5
Serveur/server_tcp.c

@@ -16,7 +16,7 @@
 extern int serrno;
 extern int serrno;
 
 
 /* --- Fonctions privées --- */
 /* --- Fonctions privées --- */
-void server_bind_tcp(Server this, int port) {
+boolean server_bind_tcp(Server this, int port) {
     /* Declaration variable */
     /* Declaration variable */
     int tmp;
     int tmp;
 
 
@@ -29,6 +29,7 @@ void server_bind_tcp(Server this, int port) {
         free(this);
         free(this);
         serrno = SEBIND;
         serrno = SEBIND;
         addperror("Impossible de bind la socket");
         addperror("Impossible de bind la socket");
+        return false;
     }
     }
 
 
     /* Listen */
     /* Listen */
@@ -37,16 +38,22 @@ void server_bind_tcp(Server this, int port) {
         free(this);
         free(this);
         serrno = SEBIND;
         serrno = SEBIND;
         addperror("Impossible d'ecouter");
         addperror("Impossible d'ecouter");
+        return false;
     }
     }
+    
+    return true;
 }
 }
 
 
-void server_accept_tcp(Server this) {
+boolean server_accept_tcp(Server this) {
     /* Accept */
     /* Accept */
     this->socket_client = accept(this->socket, NULL, NULL);
     this->socket_client = accept(this->socket, NULL, NULL);
     if (this->socket_client == ERR) {
     if (this->socket_client == ERR) {
         serrno = SEACCEPT;
         serrno = SEACCEPT;
         addperror("Impossible d'accepter");
         addperror("Impossible d'accepter");
+        return false;
     }
     }
+    
+    return true;
 }
 }
 
 
 ssize_t server_receive_tcp(Server this, char* buf, size_t size) {
 ssize_t server_receive_tcp(Server this, char* buf, size_t size) {
@@ -62,14 +69,17 @@ ssize_t server_receive_tcp(Server this, char* buf, size_t size) {
     return tmp;
     return tmp;
 }
 }
 
 
-void server_send_tcp(Server this, char* msg) {
+boolean server_send_tcp(Server this, char* msg) {
     int tmp;
     int tmp;
     /* Envoi message */
     /* Envoi message */
     tmp = write(this->socket_client, msg, strlen(msg) * sizeof (char));
     tmp = write(this->socket_client, msg, strlen(msg) * sizeof (char));
     if (tmp == ERR) {
     if (tmp == ERR) {
         serrno = SESEND;
         serrno = SESEND;
         addperror("Impossible d'envoyer les données");
         addperror("Impossible d'envoyer les données");
+        return false;
     }
     }
+    
+    return true;
 }
 }
 
 
 /* ---  Fonctions publiques --- */
 /* ---  Fonctions publiques --- */
@@ -113,15 +123,20 @@ Server server_create_tcp() {
     return this;
     return this;
 }
 }
 
 
-void server_close_client(Server this) {
+boolean server_close_client(Server this) {
     /* Que pour TCP */
     /* Que pour TCP */
     if (this->type != SERV_TCP) {
     if (this->type != SERV_TCP) {
-        return;
+        serrno = SETYPE;
+        adderror("Type de la socket incorrect");
+        return false;
     }
     }
     
     
     /* Ferme */
     /* Ferme */
     if (close(this->socket_client) == ERR) {
     if (close(this->socket_client) == ERR) {
         serrno = SECLOSE;
         serrno = SECLOSE;
         addperror("Impossible de fermer la socket");
         addperror("Impossible de fermer la socket");
+        return false;
     }
     }
+    
+    return true;
 }
 }

+ 8 - 3
Serveur/server_udp.c

@@ -16,7 +16,7 @@
 extern int serrno;
 extern int serrno;
 
 
 /* --- Fonctions privées --- */
 /* --- Fonctions privées --- */
-void server_bind(Server this, int port) {
+boolean server_bind(Server this, int port) {
     /* Declaration variable */
     /* Declaration variable */
     int tmp;
     int tmp;
 
 
@@ -29,7 +29,10 @@ void server_bind(Server this, int port) {
         free(this);
         free(this);
         serrno = SEBIND;
         serrno = SEBIND;
         addperror("Impossible de bind la socket");
         addperror("Impossible de bind la socket");
+        return false;
     }
     }
+    
+    return true;
 }
 }
 
 
 ssize_t server_receive_udp(Server this, char* buf, size_t size) {
 ssize_t server_receive_udp(Server this, char* buf, size_t size) {
@@ -49,17 +52,19 @@ ssize_t server_receive_udp(Server this, char* buf, size_t size) {
     return tmp;
     return tmp;
 }
 }
 
 
-void server_send_udp(Server this, char* msg) {
+boolean server_send_udp(Server this, char* msg) {
     /* Declaration variable */
     /* Declaration variable */
     int tmp;
     int tmp;
 
 
     /* Envoi */
     /* Envoi */
-
     tmp = sendto(this->socket, msg, strlen(msg) * sizeof (char), 0, (struct sockaddr*) &this->client, sizeof (struct sockaddr_in));
     tmp = sendto(this->socket, msg, strlen(msg) * sizeof (char), 0, (struct sockaddr*) &this->client, sizeof (struct sockaddr_in));
     if (tmp == ERR) {
     if (tmp == ERR) {
         serrno = SESEND;
         serrno = SESEND;
         addperror("Impossible d'envoyer les données");
         addperror("Impossible d'envoyer les données");
+        return false;
     }
     }
+    
+    return true;
 }
 }
 
 
 /* --- Fonctions publiques --- */
 /* --- Fonctions publiques --- */