7#ifndef __CAKE_SOCKET_H__
8#define __CAKE_SOCKET_H__
21typedef int cake_socklen;
23typedef SOCKET cake_socket;
25#define CAKE_SOCKET_BAD_SOCKET INVALID_SOCKET
26#define CAKE_SOCKET_ERROR SOCKET_ERROR
33#include <sys/socket.h>
34#include <netinet/in.h>
40typedef socklen_t cake_socklen;
42#define cake_init_winsock()
43#define cake_clean_winsock()
45typedef int cake_socket;
47#define CAKE_SOCKET_BAD_SOCKET -1
48#define CAKE_SOCKET_ERROR -1
50#define cake_socket_get_last_error_code() errno
52#define cake_close_socket(sock) close(sock)
56#include <openssl/ssl.h>
59#define CAKE_IP_V4 AF_INET
60#define CAKE_IP_V6 AF_INET6
69 struct addrinfo *address;
88 struct sockaddr_in addr;
124#define CAKE_CLIENT_SOCKET_CONNECT_OK 0
126#define CAKE_SOCKET_CLOSE 0
127#define CAKE_SOCKET_READ_ERROR SOCKET_ERROR
129#define CAKE_SOCKET_ERROR_FROM_NO_ERROR 0
130#define CAKE_SOCKET_ERROR_FROM_GETADDRINFO 1
131#define CAKE_SOCKET_ERROR_FROM_SOCKET 2
132#define CAKE_SOCKET_ERROR_FROM_CONNECT 3
133#define CAKE_SOCKET_ERROR_FROM_BIND 4
134#define CAKE_SOCKET_ERROR_FROM_LISTEN 5
135#define CAKE_SOCKET_ERROR_FROM_ACCEPT 6
136#define CAKE_SOCKET_ERROR_FROM_RECV 7
137#define CAKE_SOCKET_ERROR_FROM_SEND 8
138#define CAKE_SOCKET_ERROR_FROM_SSL_SET_FD 9
139#define CAKE_SOCKET_ERROR_FROM_SSL_CONNECT 10
140#define CAKE_SOCKET_ERROR_FROM_SSL_WRITE_EX 11
141#define CAKE_SOCKET_ERROR_FROM_SSL_READ_EX 12
143#define CAKE_SOCKET_READ_BUFFER_SIZE 2048
150inline int cake_init_winsock() {
152 return WSAStartup(MAKEWORD(2, 2), &win);
155inline int cake_clean_winsock() {
159inline int cake_socket_get_last_error_code() {
160 return WSAGetLastError();
163inline int cake_socket_read(cake_socket sock,
char *buffer,
int size) {
164 return recv(sock, buffer, size, 0);
167inline int cake_socket_send(cake_socket sock,
char *buffer,
int size) {
168 return send(sock, buffer, size, 0);
171inline int cake_close_socket(cake_socket sock) {
172 return closesocket(sock);
175#define cake_init_winsock
176#define cake_clean_winsock
179inline void cake_init_ssl() {
181 ERR_load_crypto_strings();
182 SSL_load_error_strings();
187cake_bool __cake_client_socket_recv(
void *_s,
char *_buffer, ulonglong len, ulonglong *_bytesReceived);
215cake_bool __cake_tls_client_recv(
void *_s,
char *_buffer, ulonglong len, ulonglong *_bytesReceived);
217cake_bool cake_create_tls_client(
Cake_TLSClient *tls,
const char *hostname,
const char *port, cake_byte ipMode);
220char *cake_tls_client_recv_dyn(
Cake_TLSClient *tls, ulonglong size);
225cake_bool __cake_accepted_client_socket_recv(
void *_s,
char *_buffer, ulonglong len, ulonglong *_bytesReceived);
229 cake_close_socket(client->sock);
237 cake_close_socket(sock->socket);
250 return __cake_socket_stream_read_line(&stream->buffer, __cake_client_socket_recv, &stream->client);
260 return __cake_socket_stream_read_line(&stream->buffer, __cake_accepted_client_socket_recv, &stream->client);
Fichier contenant les types utilisés fréquemment par la librairie.
char cake_bool
Type sur 8 bits, utilisé principalement comme valeur de retour des fonctions pour indiquer si une err...
Definition: def.h:126
struct cake_tlsclient Cake_TLSClient
Socket de connexion client utilisant le protocole TLS, sécurisant les communications.
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
struct cake_serversocket Cake_ServerSocket
Socket de serveur.
struct cake_acceptedclientsocket Cake_AcceptedClientSocket
Socket client accepté par un socket serveur.
struct cake_clientsocket Cake_ClientSocket
Socket de connexion client.
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 client accepté par un socket serveur.
Definition: socket.h:86
cake_byte errorFrom
Permet de savoir d'où vient l'erreur.
Definition: socket.h:89
ulong errorCode
Code de l'erreur.
Definition: socket.h:90
Socket de connexion client.
Definition: socket.h:67
cake_byte errorFrom
Permet de savoir d'où vient l'erreur.
Definition: socket.h:70
ulong errorCode
Code de l'erreur.
Definition: socket.h:71
Socket de serveur.
Definition: socket.h:96
cake_byte errorFrom
Permet de savoir d'où vient l'erreur.
Definition: socket.h:98
int errorCode
Code de l'erreur.
Definition: socket.h:99
Chaînes de caractères encodées en UTF-8.
Definition: strutf8.h:19
Socket de connexion client utilisant le protocole TLS, sécurisant les communications.
Definition: socket.h:77
Cake_ClientSocket clientSocket
Socket client interne.
Definition: socket.h:78
Fichier contenant le prototypes de tout ce qui touche aux chaînes de caractères UTF-8.