libcake 0.0.1
Librairie en C
Les sockets

La librairie permet d'utiliser les sockets de manière assez simplifiée tout en gardant un contrôle absolu sur eux.

Types

Plusieurs types de sockets existent, pour le côté client ainsi que le côté serveur :

  • Client
  • Client accepté
  • Serveur

Client

Lorsque vous voulez communiquer avec un serveur, il est nécessaire d'utiliser un socket dit "client", pour cela, Cake_ClientSocket peut être utilisé.

Utilisation

L'utilisation la plus simple est la suivante :

// Création du socket
if(!cake_create_client_socket(&client, "127.0.0.1", "80", CAKE_IP_V4)) {
// Une erreur est survenue...
}
// Connexion du socket au serveur
// Une erreur est survenue...
}
// Le socket client est créé et connecté
// Une fois l'utilisation du socket terminée, ne pas oublier de le libérer :
cake_bool cake_client_socket_connect(Cake_ClientSocket *sock)
Permet de connecter un socket client au serveur cible.
Definition: socket.c:162
void cake_free_client_socket(Cake_ClientSocket *sock)
Ferme la connexion d'un socket client.
Definition: socket.c:186
cake_bool cake_create_client_socket(Cake_ClientSocket *sock, const char *hostname, const char *port, cake_byte ipMode)
Crée un socket client sur l'adresse fournie en paramètre.
Definition: socket.c:138
Socket de connexion client.
Definition: socket.h:67

cake_create_client_socket permet d'initialiser le socket afin de pouvoir se connecter au serveur grâce à cake_client_socket_connect. Ces fonctions retournent cake_true ou cake_false selon la réussite ou non de celle-ci.

Client accepté

La différence avec le client est que la structure Cake_AcceptedClientSocket est retournée par un socket serveur au lieu d'être créée explicitement.

Utilisation

L'utilisation est extrêmement simple :

// On admet qu'un socket serveur 'server' a été créé
// Boucle du serveur
while(1) {
if(!cake_server_socket_accept(&server, &accepted)) {
// Une erreur est survenue...
}
// Une connexion entrante a été acceptée et est stockée dans 'accepted'
// Une fois l'utilisation du socket client accepté terminée,
// ne pas oublier de le libérer
cake_free_accepted_client_socket(&accepted);
}
Socket client accepté par un socket serveur.
Definition: socket.h:86

C'est la fonction cake_server_socket_accept qui crée un Cake_AcceptedClientSocket, malgré la différence de nom avec un socket client basique, le fonctionnement est strictement le même. Les fonctions relatives aux sockets clients acceptés commence par cake_accepted_client_socket_.

Serveur

Les sockets peuvent aussi être utilisés pour créer des serveurs, pour cela la structure Cake_ServerSocket peut être utilisé.

Utilisation

De manière très simple, un serveur peut-être utilisé comme ça :

// Création du socket
if(!cake_create_server_socket(&server, "80", CAKE_IP_V4, 10)) {
// Une erreur est survenue...
}
// Le socket serveur est créé et écoute sur le port spécifié
// Boucle du serveur
while(1) {
// Attente d'une connexion
if(!cake_server_socket_accept(&server, &accepted)) {
// Une erreur est survenue...
}
// Traitement du socket client accepté
cake_free_accepted_client_socket(&accepted);
}
// Une fois l'utilisation du socket serveur terminée,
// ne pas oublier de le libérer
cake_free_server_socket(&server);
Socket de serveur.
Definition: socket.h:96