Bibliotecas de rede multiplataforma de cabeçalho C99 de arquivo único.
Biblioteca | Descrição | LOC | Versão mais recente |
---|---|---|---|
udp.h | Servidor e cliente assíncronos em uma conexão UDP, útil para VOIP e servidores de jogos. | 573 | 1.0.0 |
https.h | Cliente HTTPS e HTTP assíncrono usando 1 chamada de função para emitir uma solicitação GET. | 438 | 1.0.0 |
Tudo o que você precisa fazer para usar esta biblioteca é baixá-la e colocá-la no mesmo diretório do seu código-fonte, e então procurar nela a função que ela define no topo (as exportações) e o exemplo fornecido! Coloque isto no topo de onde você deseja usá-lo:
#define UDP_IMPLEMENTATION // or HTTPS_IMPLEMENTATION
#include "udp.h" // or "https.h"
ou opcionalmente, coloque isso sozinho em um arquivo de origem e construa-o separadamente.
Aqui está uma introdução simples a cada uma das bibliotecas:
#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 );
}
As funções udp_recv()
e udp_recv_from()
não são bloqueadoras e retornam a resposta na estrutura udp_conn
, que contém um buffer com os dados e o comprimento. Você pode colocar essas funções em qualquer lugar, inclusive dentro do loop do jogo, e ele cuidará da resolução das solicitações em segundo plano antes que você esteja pronto para ler!
#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 );
}
Confira o servidor e cliente UDP VOIP de plataforma cruzada de 200 linhas no diretório voip!
Existem mais exemplos no diretório de exemplos. Os notáveis são o servidor UDP e o cliente HTTPS.
Essas bibliotecas são projetadas para serem eficientes e fáceis de usar ao mesmo tempo. Benchmarks em breve™.
A biblioteca UDP é apenas um wrapper em torno das chamadas nativas do sistema, o que a torna tão rápida quanto qualquer outra biblioteca UDP.
A biblioteca HTTPS é tão rápida quanto cURL e suporta muitas solicitações simultâneas quase sem sobrecarga.
udp.h
suporta todos os sistemas com soquetes BSD, não usa funções específicas do Linux ou Windows. https.h
é atualmente um wrapper em torno do WinHTTP, portanto, apenas o Windows é compatível, mas o suporte cURL estará disponível em breve.
Essas bibliotecas são todas licenciadas duplamente sob a licença MIT e domínio público. Você pode escolher a licença que melhor se adapta ao seu projeto. A licença MIT é uma licença permissiva, curta e direta. A licença de Domínio Público é uma licença que disponibiliza o software ao público gratuitamente e sem direitos autorais.
- Existem muitas alternativas como cute_tls e cute_net do cute_headers. Por que devo usar o Cozyweb?
Minhas experiências usando cURL, cute_headers e muitas outras soluções para interface com a web em C não foram divertidas, principalmente em programas e jogos casuais. A maioria das bibliotecas tinha muitos padrões e impunha uma série de restrições, mesmo para fazer uma simples solicitação HTTP. Eu estava procurando uma solução simples que não me distraísse tentando descobrir a semântica da biblioteca e da web toda vez que eu queria fazer algo simples, e vindo de outras linguagens com APIs HTTPS simples eu vi muito espaço para melhorias . cozyweb
será o conjunto mais simples de bibliotecas C que você pode usar para interagir com a Web e obter recursos ou arquivos para seus jogos ou programas casuais.
- Essas bibliotecas não atendem às minhas necessidades. Quais são alguns outros?