Sfoglia il codice sorgente

:art: Amelioration code

Arthur Brandao 6 anni fa
parent
commit
62598aacaa
5 ha cambiato i file con 36 aggiunte e 13 eliminazioni
  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 de la reception 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;
 

+ 1 - 0
Serveur/error.h

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

+ 5 - 4
Serveur/server.h

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

+ 20 - 5
Serveur/server_tcp.c

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

+ 8 - 3
Serveur/server_udp.c

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