Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การใช้ที่อยู่ซ็อกเก็ต IPv6 ใน C:คำแนะนำทีละขั้นตอน

การใช้ที่อยู่ซ็อกเก็ต IPv6 ใน C:คำแนะนำทีละขั้นตอน

เราทุกคนรู้เกี่ยวกับที่อยู่ IPv4 ขณะนี้ เนื่องจากที่อยู่ IPv4 หมดลงแล้ว IPv6 จึงถูกนำมาใช้เพื่อให้พื้นที่ที่อยู่มีขนาดใหญ่ขึ้น

ให้เราหารือเกี่ยวกับการใช้งานที่อยู่ IPv6 สำหรับซ็อกเก็ตในภาษา C การทำความเข้าใจและการใช้งานที่อยู่ IPv6 ในการเขียนโปรแกรมซ็อกเก็ตทำให้สามารถสื่อสารได้อย่างราบรื่นในเครือข่ายที่ใช้ IPv6 และรับประกันความเข้ากันได้

ทำความเข้าใจที่อยู่ IPv6

ที่อยู่ IPv6 เป็นส่วนสำคัญของ Internet Protocol เวอร์ชัน 6 (IPv6) และมีบทบาทสำคัญในการระบุและระบุตำแหน่งอุปกรณ์บนเครือข่าย เนื่องจากที่อยู่ IPv4 หมดลง IPv6 จึงถูกนำมาใช้เพื่อเอาชนะข้อจำกัดและให้พื้นที่ที่อยู่ขนาดใหญ่ขึ้นอย่างมาก ที่อยู่ IPv6 เป็นตัวเลข 128 บิต ซึ่งส่งผลให้มีที่อยู่ที่ไม่ซ้ำกันทั้งหมด 2^128 รายการ

โครงสร้างของที่อยู่ IPv6 แสดงเป็น:

อ๊าาา:อ๊าาา:อ๊าาา:อ๊าาา:อ๊าาา:อ๊าาา:อ๊าาา:อ๊าาา

ในที่นี้ “a” แต่ละตัวแทนเลขฐานสิบหก 4 หลักซึ่งมีช่วงตั้งแต่ 0000 ถึง FFFF

ศูนย์นำหน้าภายในบล็อก 16 บิตจะถูกข้ามไปในการแสดงที่อยู่ IPV6 ตัวอย่างเช่น ที่อยู่ “2001:0DB8:0000:0000:0000:0000:0000:0001” สามารถเขียนเป็น “2001:DB8::1” ได้ สัญลักษณ์ “::” ช่วยให้แสดงได้กระชับมากขึ้น โดยเฉพาะที่อยู่ที่มีสตริงยาวเป็นศูนย์ อย่างไรก็ตาม เราต้องใช้ด้วยความระมัดระวัง เนื่องจากอาจทำให้เกิดความกำกวมเมื่อเกิดเหตุการณ์ “::” หลายครั้งได้ ในสถานการณ์นั้น เราควรขยายที่อยู่ทั้งหมดเพื่อรักษาความชัดเจน

ที่อยู่ IPv6 ไม่คำนึงถึงขนาดตัวพิมพ์ ซึ่งอนุญาตให้ทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นเลขฐานสิบหก อย่างไรก็ตาม แบบแผนคือการใช้อักษรตัวพิมพ์เล็กเพื่อความสอดคล้องกัน ที่อยู่ IPv6 มีจุดประสงค์ที่หลากหลาย รวมถึงการระบุอินเทอร์เฟซเครือข่าย การกำหนดเส้นทางแพ็กเก็ต และการเปิดใช้งานการสื่อสารระหว่างอุปกรณ์ โดยจะกำหนดให้กับอุปกรณ์ด้วยตนเองหรือโดยอัตโนมัติผ่านโปรโตคอล เช่น Dynamic Host Configuration Protocol เวอร์ชัน 6 (DHCPv6) ดังนั้น การใช้ที่อยู่ IPv6 สำหรับซ็อกเก็ตในภาษา C จึงมีความสำคัญ เนื่องจากช่วยให้เกิดการสื่อสารที่ราบรื่นในเครือข่ายที่ใช้ IPv6 ซึ่งช่วยเพิ่มจำนวนอุปกรณ์ และรับประกันความเข้ากันได้กับโครงสร้างพื้นฐานอินเทอร์เน็ตที่กำลังพัฒนา

ขั้นตอนในการใช้งานที่อยู่ IPv6 สำหรับซ็อกเก็ตใน C

ให้เราพิจารณาขั้นตอนต่อไปนี้เกี่ยวกับวิธีการใช้ที่อยู่ IPv6 สำหรับซ็อกเก็ตในภาษา C:

  • ในตอนแรก เราต้องรวมส่วนหัวที่จำเป็นซึ่งมีโครงสร้างและฟังก์ชันเพื่อทำงานกับซ็อกเก็ตในโปรแกรม C ของเรา
  • จากนั้น เราจะต้องสร้างซ็อกเก็ต เราต้องใช้ฟังก์ชัน socket() เพื่อสร้างซ็อกเก็ต IPv6 จากนั้น เราระบุโดเมนเป็น AF_INET6 และประเภทเป็น SOCK_STREAM สำหรับ TCP หรือ SOCK_DGRAM สำหรับ UDP
  • จากนั้น ผูกซ็อกเก็ต เราเชื่อมโยงซ็อกเก็ตกับที่อยู่ IPv6 และพอร์ตเฉพาะโดยใช้ฟังก์ชันbind() จากนั้น เราสร้างโครงสร้างชื่อ "struct sockaddr_in6" และให้ข้อมูลแก่มัน
  • จากนั้นเราจะรับฟังการเชื่อมต่อโดยใช้ฟังก์ชัน Listen() เพื่อเตรียมซ็อกเก็ตสำหรับการเชื่อมต่อขาเข้า
  • สุดท้าย เพื่อยอมรับการเชื่อมต่อ เราใช้ฟังก์ชัน Accept() เพื่อยอมรับการเชื่อมต่อขาเข้าบนซ็อกเก็ตที่ถูกผูกไว้ ซึ่งจะส่งคืนตัวอธิบายไฟล์ซ็อกเก็ตใหม่

ตัวอย่างการเขียนโปรแกรม 1:ใช้ที่อยู่ IPv6 สำหรับซ็อกเก็ต

#รวม
#รวม
#รวม
#รวม
#รวม
#รวม
#รวม
#รวม

#กำหนดพอร์ต 7070
#define BACKLOG 5

int หลัก ()
 {
    int server_fd, new_socket;
    โครงสร้าง sockaddr_in6 server_addr, client_addr;
    socklen_t client_addr_len;

    //  เราสร้างซ็อกเก็ต IPv6
    server_fd =ซ็อกเก็ต (AF_INET6, SOCK_STREAM, 0);
    ถ้า (server_fd ==-1)
 {
        perror ("การสร้างซ็อกเก็ตล้มเหลว");
        ทางออก (EXIT_FAILURE);
    }
    //  เราผูกซ็อกเก็ต
    memset(&server_addr, 0, ขนาดของ(server_addr));
    server_addr.sin6_family =AF_INET6;
    server_addr.sin6_port =htons (พอร์ต);
    server_addr.sin6_addr =in6addr_any;
    ถ้า (ผูก (server_fd, (struct sockaddr*) &server_addr, sizeof (server_addr)) ==-1) {
        perror ("การผูกซ็อกเก็ตล้มเหลว");
        ทางออก (EXIT_FAILURE);
   

    Printf ("กำลังฟังการเชื่อมต่อบนที่อยู่ IPv6 ...\n");

    // ฟังการเชื่อมต่อที่เข้ามา
    ถ้า (ฟัง (server_fd, BACKLOG) ==-1) {
        perror ("การฟังซ็อกเก็ตล้มเหลว");
        ทางออก (EXIT_FAILURE);
   

    printf ("กำลังรอการเชื่อมต่อขาเข้า ...\n");

    // เรายอมรับการเชื่อมต่อ
    client_addr_len =ขนาดของ (client_addr);
    new_socket =ยอมรับ (server_fd, (struct sockaddr*) &client_addr, &client_addr_len);
    ถ้า (new_socket ==-1) {
        perror ("ซ็อกเก็ตยอมรับล้มเหลว");
        ทางออก (EXIT_FAILURE);
   

    printf ("การเชื่อมต่อสำเร็จบนที่อยู่ IPv6! \n");

    // แปลงและแสดงที่อยู่ IPv6 ไคลเอ็นต์
    ถ่าน client_ip_str [INET6_ADDRSTRLEN];
    inet_ntop (AF_INET6, &(client_addr.sin6_addr), client_ip_str, INET6_ADDRSTRLEN);
    printf ("IP ไคลเอนต์ที่เชื่อมต่อ:%s\n", client_ip_str);

    // ตอนนี้เราปิดซ็อกเก็ต
    ปิด (new_socket);
    ปิด (server_fd);

    กลับ 0;

เอาต์พุต:

$ gcc srr.c -o srr
$ ./srr
กำลังฟังการเชื่อมต่อบนที่อยู่ IPv6 ...
กำลังรอการเชื่อมต่อขาเข้า ...

คำอธิบาย:

ในตัวอย่างการเขียนโปรแกรมนี้ ขั้นแรกเราจะตั้งค่าซ็อกเก็ต IPv6 ผูกเข้ากับพอร์ตที่ระบุ จากนั้นรับฟังการเชื่อมต่อขาเข้า จากนั้น เราจะแสดงข้อความที่ระบุว่ากำลังรอการเชื่อมต่อและกำลังรอการเชื่อมต่อขาเข้า เมื่อไคลเอนต์เชื่อมต่อสำเร็จ ระบบจะพิมพ์ข้อความที่ยืนยันการเชื่อมต่อและแสดงที่อยู่ IPv6 ของไคลเอนต์ ในที่สุดเราก็ปิดซ็อกเก็ตทั้งหมด ตัวอย่างการเขียนโปรแกรมนี้อนุญาตให้สื่อสารกับไคลเอนต์ผ่านเครือข่าย IPv6

บทสรุป

การใช้งานที่อยู่ IPv6 สำหรับซ็อกเก็ตในภาษา C เป็นสิ่งสำคัญในการเปิดใช้งานการสื่อสารในเครือข่ายที่เปิดใช้งาน IPv6 ในบทความนี้ เราได้อธิบายการสร้างซ็อกเก็ต IPv6 เชื่อมโยงเข้ากับที่อยู่และพอร์ตเฉพาะ ฟังการเชื่อมต่อขาเข้า ยอมรับการเชื่อมต่อ และแสดงที่อยู่ IPv6 ของไคลเอ็นต์ ด้วยการทำตามขั้นตอนเหล่านี้และการใช้ฟังก์ชันและโครงสร้างที่เหมาะสม เราจะสามารถใช้การจัดการที่อยู่ IPv6 ในภาษา C ได้สำเร็จ

เกี่ยวกับผู้เขียน

การใช้ที่อยู่ซ็อกเก็ต IPv6 ใน C:คำแนะนำทีละขั้นตอน

บัมเด็บ กอช

Bamdeb Ghosh มีประสบการณ์ตรงในโดเมนเครือข่ายไร้สาย เขาเป็นผู้เชี่ยวชาญในการวิเคราะห์การจับ Wireshark บนเครือข่ายไร้สายหรือแบบมีสาย พร้อมด้วยความรู้เกี่ยวกับ Android, Bluetooth, คำสั่ง Linux และ Python ติดตามเว็บไซต์ของเขา:wifisharks.com