Bibliothèques réseau multiplateformes à en-tête C99 à fichier unique.
Bibliothèque | Description | LOC | Dernière version |
---|---|---|---|
udp.h | Serveur et client asynchrone sur une connexion UDP, utile pour les serveurs VOIP et de jeux. | 573 | 1.0.0 |
https.h | Client HTTPS et HTTP asynchrone utilisant 1 appel de fonction pour émettre une requête GET. | 438 | 1.0.0 |
Tout ce que vous avez à faire pour utiliser cette bibliothèque est de la télécharger et de la placer dans le même répertoire que votre code source, puis de rechercher la fonction qu'elle définit en haut (les exports) et l'exemple fourni ! Mettez ceci en haut de l'endroit où vous souhaitez l'utiliser :
#define UDP_IMPLEMENTATION // or HTTPS_IMPLEMENTATION
#include "udp.h" // or "https.h"
ou éventuellement, placez-le seul dans un fichier source et construisez-le séparément.
Voici une introduction simple à chacune des bibliothèques :
#include <stdio.h>
#define UDP_IMPLEMENTATION
#include "udp.h"
int main () {
udp_conn * client = udp_connect ( udp_resolve_host ( "localhost" , "30000" , true, & ( udp_addr ){}), false);
if ( client -> error ) {
printf ( "Error %d: %sn" , client -> error , udp_error_str ( client -> error ));
return 1 ;
}
udp_send ( client , "Hello from client!" , sizeof ( "Hello from clie16!" ));
while (! udp_recv ( client )); // Wait for a response from the server.
printf ( "Received "%.*s"n" , ( int ) client -> data_len , ( char * ) client -> data );
udp_close_n_free ( client );
}
Les fonctions udp_recv()
et udp_recv_from()
sont non bloquantes et renvoient la réponse dans la structure udp_conn
, qui contient un tampon avec les données et la longueur. Vous pouvez placer ces fonctions n'importe où, y compris dans votre boucle de jeu et il se chargera de résoudre les requêtes en arrière-plan avant que vous soyez prêt à lire !
#include <stdio.h>
#define HTTPS_IMPLEMENTATION
#include "include/https.h"
int main () {
https_req * req = https_get ( "https://picsum.photos/600/800" ); // http works too!
while ( req -> state == HTTPS_PENDING ); // Sleep(20); // Wait for the request to complete.
if ( req -> state != HTTPS_COMPLETE ) {
printf ( "Failed to get responsenStatus Code: %dnReason: %s" , req -> status_code ,
req -> req_failed_reason );
https_free ( req );
return 1 ;
}
printf ( "Status: %dn" , req -> status_code );
printf ( "Response Size: %un" , req -> data_len );
printf ( "Response: %.256sn" , ( char const * ) req -> data );
https_free ( req );
}
Découvrez le serveur et le client UDP VOIP multiplateforme de 200 lignes dans le répertoire VoIP !
Il y a plus d'exemples dans le répertoire d'exemples. Les plus notables sont le serveur UDP et le client HTTPS.
Ces bibliothèques sont conçues pour être à la fois efficaces et faciles à utiliser. Les benchmarks seront bientôt disponibles™.
La bibliothèque UDP n'est qu'un wrapper autour des appels système natifs, ce qui la rend aussi rapide que n'importe quelle autre bibliothèque UDP.
La bibliothèque HTTPS est aussi rapide que cURL et prend en charge de nombreuses requêtes simultanées sans pratiquement aucune surcharge.
udp.h
prend en charge tous les systèmes dotés de sockets BSD, il n'utilise aucune fonction spécifique à Linux ou Windows. https.h
est actuellement un wrapper autour de WinHTTP, donc seul Windows est pris en charge, mais la prise en charge de cURL sera bientôt disponible.
Ces bibliothèques bénéficient toutes d'une double licence sous la licence MIT et le domaine public. Vous pouvez choisir la licence qui convient le mieux à votre projet. La licence MIT est une licence permissive, courte et précise. La licence du domaine public est une licence qui met le logiciel à la disposition du public gratuitement et sans droit d'auteur.
- Il existe de nombreuses alternatives comme cute_tls et cute_net de cute_headers. Pourquoi devrais-je utiliser CozyWeb ?
Mes expériences d'utilisation de cURL, cute_headers et de nombreuses autres solutions d'interface avec le Web en C n'étaient pas amusantes, en particulier dans les programmes et jeux occasionnels. La plupart des bibliothèques disposaient d'une tonne de passe-partout et appliquaient une tonne de restrictions, même pour effectuer une simple requête HTTP. Je cherchais une solution simple qui ne me distrait pas en essayant de comprendre la sémantique de la bibliothèque et du Web à chaque fois que je voulais faire quelque chose de simple, et venant d'autres langages avec de simples API HTTPS, j'ai vu beaucoup de choses à améliorer. . cozyweb
sera l'ensemble de bibliothèques C le plus simple que vous puissiez utiliser pour vous connecter au Web afin d'obtenir des ressources ou des fichiers pour vos jeux ou programmes occasionnels.
- Ces bibliothèques ne répondent pas à mes besoins. Quels en sont les autres ?