C:
ส่งคำขอ HTTP
วิธีทำ:
ในการส่งคำขอ HTTP ในภาษา C, โดยปกติคุณจะพึ่งพาไลบรารีเช่น libcurl, เนื่องจาก C ไม่มีการสนับสนุนโปรโตคอลเว็บเข้ามาในตัว เป็นตัวอย่างง่ายๆ ด้วยการใช้ libcurl ในการทำคำขอ GET:
ก่อนอื่น, ตรวจสอบให้แน่ใจว่าคุณมี libcurl ติดตั้งไว้ในระบบของคุณ จากนั้น รวมหัวข้อที่จำเป็นและเชื่อมโยงกับไลบรารี libcurl ในไฟล์ต้นฉบับของคุณ:
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl = curl_easy_init(); // สร้างตัวจัดการ libcurl
if(curl) {
// ตั้งค่า URL ที่รับตัวจัดการ libcurl
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
// กำหนดฟังก์ชั่นย้อนกลับเพื่อรับข้อมูล
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
// ทำการคำขอ, res จะได้รับรหัสผลลัพธ์
res = curl_easy_perform(curl);
// ตรวจสอบข้อผิดพลาด
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
// ทำความสะอาดเสมอ
curl_easy_cleanup(curl);
}
return 0;
}
คอมไพล์ด้วยคำสั่งเช่น gcc -o http_request http_request.c -lcurl
, เมื่อทำการรัน จะทำการส่งคำขอ GET ง่ายๆไปยัง “http://example.com”.
ผลลัพธ์ตัวอย่าง
เนื่องจากตัวอย่างไม่ได้ดำเนินการประมวลผลคำตอบจากเซิร์ฟเวอร์, การรันจะไม่ได้ผลลัพธ์ที่เห็นได้ชัดเจนนอกจากข้อความแจ้งข้อผิดพลาดที่มีศักยภาพ การรวมฟังก์ชั่นย้อนกลับสำหรับการประมวลผลข้อมูลที่รับมาสำคัญต่อการโต้ตอบที่มีความหมาย
ลงลึก
แนวคิดของการส่งคำขอ HTTP จากโปรแกรมภาษา C พึ่งพาความสามารถทางการเครือข่ายที่ทรงพลังของภาษา, รวมถึงการใช้ไลบรารีภายนอกเนื่องจาก C เป็นภาษาระดับต่ำที่ไม่มีการสนับสนุนโปรโตคอลอินเทอร์เน็ตระดับสูงเข้ามาในตัว ในอดีต โปรแกรมเมอร์มักจะใช้การเขียนโปรแกรมเชื่อมต่อแบบบังคับในภาษา C, กระบวนการที่ซับซ้อนและเหนื่อยล้า, เพื่อโต้ตอบกับเว็บเซิร์ฟเวอร์ก่อนการมาถึงของไลบรารีที่เฉพาะเจาะจงเช่น libcurl
Libcurl, สร้างอยู่บนฐานของ C, ทำให้กระบวนการง่ายขึ้น โดยซ่อนรายละเอียดที่ยุ่งยากของการเขียนโปรแกรมเชื่อมต่อและเฉพาะเจาะจงของโปรโตคอล HTTP ไว้ มันรองรับโปรโตคอลมากมายนอกเหนือจาก HTTP/HTTPS, รวมถึง FTP, SMTP และอื่นๆ ทำให้เป็นเครื่องมือที่หลากหลายสำหรับการเขียนโปรแกรมเครือข่ายในภาษา C
ในขณะที่การใช้ libcurl สำหรับคำขอ HTTP ในภาษา C เป็นเรื่องที่ปฏิบัติได้, การเขียนโปรแกรมสมัยใหม่มักจะเอนเอียงไปยังภาษาที่มีการสนับสนุนงานเหล่านี้อยู่ในตัว, เช่น Python (ไลบรารี requests) หรือ JavaScript (Fetch API) ภาษาเหล่านี้มีไวยากรณ์ที่ง่ายและอ่านง่ายกว่า แต่ขาดการควบคุมแบบละเอียดรอบคอบและการปรับแต่งประสิทธิภาพที่เป็นไปได้ในภาษา C ผ่านการจัดการเชื่อมต่อโดยตรงและการใช้ไลบรารีที่ปรับแต่งได้เป็นอย่างดี
สำหรับแอปพลิเคชันที่ต้องการประสิทธิภาพสูงหรือที่ต้องการการโต้ตอบระดับระบบโดยตรง, C ยังคงเป็นตัวเลือกที่เป็นไปได้, โดยเฉพาะด้วย libcurl ที่ช่วยลดความซับซ้อนของการสื่อสารเว็บ อย่างไรก็ตาม, สำหรับการโต้ตอบเว็บระดับสูงส่วนใหญ่, การสำรวจภาษาการเขียนโปรแกรมเว็บที่เฉพาะเจาะจงอาจพิสูจน์ว่ามีประสิทธิภาพมากกว่า