單一檔案 C99 標頭跨平台網路庫。
圖書館 | 描述 | LOC | 最新版本 |
---|---|---|---|
udp.h | UDP 連線上的非同步伺服器和用戶端,對於 VOIP 和遊戲伺服器很有用。 | 第573章 | 1.0.0 |
https.h | 非同步 HTTPS 和 HTTP 用戶端使用 1 個函數呼叫來發出 GET 請求。 | 第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。我為什麼要使用 cosyweb?
我使用 cURL、cute_headers 和許多其他 C 語言與網路互動的解決方案的經驗並不有趣,尤其是在休閒程式和遊戲中。大多數庫都有大量的樣板文件,並且即使對於發出簡單的 HTTP 請求也強制執行大量的限制。我一直在尋找一個簡單的解決方案,每次我想做一些簡單的事情時,它不會讓我分心試圖弄清楚庫和網路的語義,並且來自具有簡單HTTPS API 的其他語言,我看到了很大的改進空間。 cozyweb
將是最簡單的 C 庫集,您可以使用它與網路交互,為您的遊戲或休閒程式取得資源或檔案。
- 這些庫不符合我的需要。其他還有哪些?