ไฟล์เดียวไลบรารีเครือข่ายข้ามแพลตฟอร์มส่วนหัว C99
ห้องสมุด | คำอธิบาย | ล็อค | เวอร์ชันล่าสุด |
---|---|---|---|
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
ซึ่งมีบัฟเฟอร์พร้อมข้อมูลและความยาว คุณสามารถวางฟังก์ชันเหล่านี้ไว้ที่ใดก็ได้ รวมถึงภายใน Game Loop ของคุณด้วย และมันจะจัดการแก้ไขคำขอในเบื้องหลังก่อนที่คุณจะพร้อมอ่าน!
#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 );
}
ตรวจสอบเซิร์ฟเวอร์ UDP VOIP ข้ามแพลตฟอร์มและไคลเอนต์ 200 บรรทัดในไดเร็กทอรี voip!
มีตัวอย่างเพิ่มเติมในไดเร็กทอรีตัวอย่าง สิ่งที่โดดเด่นคือเซิร์ฟเวอร์ UDP และไคลเอนต์ HTTPS
ไลบรารีเหล่านี้ได้รับการออกแบบให้มีประสิทธิภาพและใช้งานง่ายในเวลาเดียวกัน มาตรฐานจะมาเร็ว ๆ นี้™
ไลบรารี UDP เป็นเพียงตัวล้อมรอบการเรียกของระบบเนทิฟ ซึ่งทำให้รวดเร็วเท่ากับไลบรารี UDP อื่นๆ
ไลบรารี HTTPS นั้นเร็วเท่ากับ cURL และรองรับคำขอจำนวนมากพร้อมกันโดยแทบไม่มีค่าใช้จ่ายใดๆ
udp.h
รองรับทุกระบบที่มีซ็อกเก็ต BSD แต่ไม่ได้ใช้ฟังก์ชันเฉพาะของ Linux หรือ Windows ขณะนี้ https.h
เป็น wrapper รอบ WinHTTP ดังนั้นจึงรองรับเฉพาะ Windows เท่านั้น แต่รองรับ cURL ในเร็วๆ นี้
ไลบรารีเหล่านี้ได้รับใบอนุญาตแบบคู่ทั้งหมดภายใต้ใบอนุญาต MIT และโดเมนสาธารณะ คุณสามารถเลือกใบอนุญาตที่เหมาะสมกับโครงการของคุณได้ดีที่สุด ใบอนุญาต MIT เป็นใบอนุญาตที่อนุญาตซึ่งสั้นและตรงประเด็น ใบอนุญาตที่เป็นสาธารณสมบัติคือใบอนุญาตที่ทำให้ซอฟต์แวร์พร้อมใช้งานแก่สาธารณะได้ฟรีและไม่มีลิขสิทธิ์
- มีทางเลือกมากมาย เช่น cute_headers' cute_tls และ cute_net เหตุใดฉันจึงควรใช้โคซี่เว็บ?
ประสบการณ์ของฉันในการใช้ cURL, cute_headers และโซลูชันอื่นๆ มากมายสำหรับการเชื่อมต่อกับเว็บในภาษา C ไม่ใช่เรื่องสนุก โดยเฉพาะในโปรแกรมและเกมทั่วไป ห้องสมุดส่วนใหญ่มีโปรแกรมสำเร็จรูปจำนวนมากและบังคับใช้ข้อจำกัดมากมาย แม้ว่าจะทำการร้องขอ HTTP แบบธรรมดาก็ตาม ฉันกำลังมองหาวิธีแก้ปัญหาง่ายๆ ที่ไม่ทำให้ฉันฟุ้งซ่านเมื่อพยายามเข้าใจความหมายของไลบรารีและเว็บทุกครั้งที่ฉันต้องการทำอะไรง่ายๆ และมาจากภาษาอื่นที่มี HTTPS API แบบง่าย ฉันเห็นว่ามีพื้นที่ให้ปรับปรุงอีกมาก . cozyweb
จะเป็นชุดไลบรารี C ที่ง่ายที่สุดที่คุณสามารถใช้เพื่อเชื่อมต่อกับเว็บเพื่อรับทรัพยากรหรือไฟล์สำหรับเกมหรือโปรแกรมทั่วไปของคุณ
- ห้องสมุดเหล่านี้ไม่ตรงกับความต้องการของฉัน คนอื่นๆ มีอะไรบ้าง?