مكتبات الشبكات ذات رأس C99 ذات الملف الواحد.
مكتبة | وصف | لوك | أحدث نسخة |
---|---|---|---|
udp.h | خادم وعميل غير متزامنين على اتصال UDP، وهو مفيد لخوادم VOIP والألعاب. | 573 | 1.0.0 |
https.h | عميل HTTPS وHTTP غير متزامن يستخدم استدعاء دالة واحدة لإصدار طلب 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 );
}
تحقق من 200 خط عبر منصة UDP VOIP Server والعميل في دليل 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 لم تكن ممتعة، خاصة في البرامج والألعاب غير الرسمية. كان لدى معظم المكتبات الكثير من القواعد المعيارية وفرضت عددًا كبيرًا من القيود حتى عند تقديم طلب HTTP بسيط. كنت أبحث عن حل بسيط لا يشتت انتباهي في محاولة فهم دلالات المكتبة والويب في كل مرة أردت أن أفعل شيئًا بسيطًا، وعندما أتيت من لغات أخرى باستخدام واجهات برمجة التطبيقات HTTPS البسيطة، رأيت مجالًا كبيرًا للتحسين . سيكون cozyweb
أبسط مجموعة من مكتبات C التي يمكنك استخدامها للتفاعل مع الويب للحصول على الموارد أو الملفات لألعابك أو برامجك غير الرسمية.
- هذه المكتبات لا تناسب حاجتي. ما هي بعض الآخرين؟