単一ファイルの C99 ヘッダーのクロスプラットフォーム ネットワーキング ライブラリ。
図書館 | 説明 | LOC | 最新バージョン |
---|---|---|---|
udp.h | UDP 接続上の非同期サーバーとクライアント。VOIP サーバーやゲーム サーバーに便利です。 | 573 | 1.0.0 |
https.h | 1 つの関数呼び出しを使用して GET リクエストを発行する非同期 HTTPS および HTTP クライアント。 | 438 | 1.0.0 |
このライブラリを使用するために必要なのは、ライブラリをダウンロードしてソース コードと同じディレクトリに配置し、上部で定義されている関数 (エクスポート) と提供されたサンプルを調べることだけです。これを使用したい場所の先頭に置きます。
#define UDP_IMPLEMENTATION // or HTTPS_IMPLEMENTATION
#include "udp.h" // or "https.h"
または、必要に応じて、それ自体をソース ファイルに入れて、個別にビルドします。
各ライブラリの簡単な紹介は次のとおりです。
#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 );
}
udp_recv()
とudp_recv_from()
関数は非ブロッキングであり、データと長さを含むバッファーを含むudp_conn
構造体で応答を返します。これらの関数は、ゲーム ループ内を含むどこにでも配置でき、読み込みの準備ができる前にバックグラウンドでリクエストを解決します。
#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 );
}
voip ディレクトリにある 200 行のクロスプラットフォーム UDP VOIP サーバーとクライアントをチェックしてください。
サンプル ディレクトリにはさらに多くのサンプルがあります。注目すべきものは、UDP サーバーと HTTPS クライアントです。
これらのライブラリは、効率的であると同時に使いやすいように設計されています。ベンチマークは近日公開™。
UDP ライブラリはネイティブ システム コールの単なるラッパーであり、他の UDP ライブラリと同じくらい高速になります。
HTTPS ライブラリは cURL と同じくらい高速で、ほとんどオーバーヘッドなしで多くの同時リクエストをサポートします。
udp.h
、BSD ソケットを備えたすべてのシステムをサポートしており、Linux または Windows 固有の関数は使用しません。 https.h
は現在 WinHTTP のラッパーであるため、Windows のみがサポートされていますが、cURL も近々サポートされる予定です。
これらのライブラリはすべて、MIT ライセンスとパブリック ドメインに基づいて二重ライセンスされています。プロジェクトに最適なライセンスを選択できます。 MIT ライセンスは、短く要点を絞った寛容なライセンスです。パブリック ドメイン ライセンスは、ソフトウェアを著作権なしで無料で公開するライセンスです。
- Cute_headers の Cute_tls や Cute_net など、多くの代替手段があります。なぜコージーウェブを使用する必要があるのですか?
cURL、cute_headers、および C で Web とインターフェースするための他の多くのソリューションを使用した私の経験は、特にカジュアルなプログラムやゲームでは面白くありませんでした。ほとんどのライブラリには大量の定型文があり、単純な HTTP リクエストを行う場合でも大量の制限が適用されていました。私は、何か単純なことをしたいと思うたびに、ライブラリと Web のセマンティクスを理解することに気を取られずに済むシンプルなソリューションを探していました。また、シンプルな HTTPS API を備えた他の言語から来たものであるため、改善の余地がたくさんあることがわかりました。 。 cozyweb
ゲームやカジュアル プログラム用のリソースやファイルを取得するために Web と接続するために使用できる、最も単純な C ライブラリのセットになります。
- これらのライブラリは私のニーズには合いません。他には何がありますか?