server.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * File: server.h
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 14 novembre 2018
  6. */
  7. #ifndef SERVER_H
  8. #define SERVER_H
  9. /* --- Include --- */
  10. #include <sys/types.h>
  11. #include <sys/socket.h>
  12. #include <arpa/inet.h>
  13. #include "constante.h"
  14. /* --- Constantes --- */
  15. #define SERV_UDP 1
  16. #define SERV_TCP 2
  17. /* --- Structures --- */
  18. typedef struct server* Server;
  19. struct server{
  20. int type; /* Le type de serveur (UDP ou TCP) */
  21. /* Var server */
  22. int socket; /* Socket du serveur */
  23. int socket_client; /* Socket du client (TCP uniquement) */
  24. struct sockaddr_in serv; /* Adresse du serveur */
  25. struct sockaddr_in client; /* Adresse du client */
  26. socklen_t addr;
  27. /* Pointeur de fonction */
  28. boolean (*server_bind)(Server, int);
  29. ssize_t (*server_receive)(Server, char*, size_t);
  30. boolean (*server_send)(Server, char*);
  31. boolean (*server_accept)(Server);
  32. };
  33. /* --- Fonction --- */
  34. /**
  35. * Creation d'un serveur UDP
  36. * @return Le serveur
  37. */
  38. Server server_create_udp();
  39. /**
  40. * Creation d'un serveur TCP
  41. * @return Le serveur
  42. */
  43. Server server_create_tcp();
  44. /**
  45. * Ferme un serveur
  46. * @param Server Le serveur à fermer
  47. */
  48. void server_close(Server);
  49. /**
  50. * Ferme la connexion avec un client d'une socket TCP
  51. * @param Server Ferme le client d'un serveur TCP
  52. * @return boolean Reussite
  53. */
  54. boolean server_close_client(Server);
  55. /**
  56. * Clone un serveur
  57. * @param Server Le serveur à cloner
  58. * @return Server Le serveur clonner
  59. */
  60. Server server_clone(Server);
  61. #endif /* SERVER_H */