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 ที่ช่วยลดความซับซ้อนของการสื่อสารเว็บ อย่างไรก็ตาม, สำหรับการโต้ตอบเว็บระดับสูงส่วนใหญ่, การสำรวจภาษาการเขียนโปรแกรมเว็บที่เฉพาะเจาะจงอาจพิสูจน์ว่ามีประสิทธิภาพมากกว่า