Classe serveur de type normal ou crypte ssl (linux et windows (vc++))

Description

J'ai toujours trouvé difficile de manipuler les sockets. Il se trouve que je me suis retrouvé à faire un programme nécessitant l'utilisation des sockets, qui plus est, cryptées à l'aide du protocole SSL (Secure Socket Layer).
Lors de la crétaion de mon programme, pour simplifier un peu la compréhension du code j'ai fait une classe serveur de tel sorte que désormais code est moins fouilli.
J'ai décidé de poster cette classe afin de faciliter la création d'un serveur. De plus l'utilisation des sockets avec SSL est pour le moins compliqué, et la doc sur internet est loin d'être claire. Donc ce code devrait vous faciliter la tâche.
La classe client allant avec cette classe serveur est en phase d'être terminée (encore un peu d'améliorations à apporter, et surtout beaucoup de tests à effectuer).
UNE DOCUMENTATION SUR LA FACON DONT SE SERVIR DE LA CLASSE EST DISPONIBLE DANS LE ZIP

Source / Exemple :


/***************************************************************************
                          server  -  description
                             -------------------
    begin                : jeu oct 28 2004
    copyright            : (C) 2004 by neoTHGLF
    email                : neoTHGLF.neoTHGLF@laposte.net

                                                                                                                                                      • /
/***************************************************************************
  • *
  • This program is free software; you can redistribute it and/or modify *
  • it under the terms of the GNU General Public License as published by *
  • the Free Software Foundation; either version 2 of the License, or *
  • (at your option) any later version. *
  • *
                                                                                                                                                      • /
/***************************************************************************
  • *
  • Setup a server. Thanks to different functions you can choose wheather *
  • you want a securised connection or a simple connection. *
  • *
                                                                                                                                                      • /
#ifndef SERVER_H #define SERVER_H #include <iostream> #include <string> #include <openssl/ssl.h> #include <openssl/err.h> #include "error.h" #ifdef WIN32 #include <winsock2.h> typedef int socklen_t; #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"ssleay32.lib") #pragma comment(lib,"libeay32.lib") #else #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #endif using std::cout; using std::endl; using std::string; /** @author neoTHGLF
  • /
class server{ public: int server_set(short server_sin_family,int server_listen_port,char server_bind_adress,int nb_clients); //Make the skeleton of the server int server_set(short server_sin_family,int server_listen_port,char server_bind_adress,int nb_clients,string certificate,string private_key_file); //Make the skeleton of the server with SSL support int server_bind(); /* Bind the server to a port */ int server_listen(); /* Make server to listen */ int server_accept(); /* Accept a connection */ int server_write(char *msg); int server_read(char *msg); int server_get_fd() const; /* Gives fd */ SSL *server_get_SSL_fd() const; /* Gives SSL_fd */ char *convert(string str); /* Convert a string into char */ private: #ifdef WIN32 SOCKET fd; #else int fd; #endif SSL *SSL_fd; /* SSL socket */ SSL_CTX *SSL_ctx; /* SSL context*/ int max_clients; /* Maximum clients in the listen() queue */ int port; /* Port on which the server is listening */ struct sockaddr_in server_addr; int server_len; bool server_ssl_state; }; #endif

Conclusion :


UNE DOCUMENTATION SUR LA FACON DONT SE SERVIR DE LA CLASSE EST DISPONIBLE DANS LE ZIP

Cette source fonctionne à la fois sous linux et sous windows(VC++).
Le code des fonctions est dans le zip.
Pour fonctionner vous devez possèder les librairies SSL.

Pour linux --> http://www.openssl.org
Pour windows --> http://www.shininglightpro.com/download/Win32OpenSSL-v0.9.7f.exe
Site : http://www.slproweb.com/products/Win32OpenSSL.html

Vous aurez remarqué que mes commentaires sont en Anglais... Mondialisation oblige... ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.