0Pricing
C Academy · درس

نظرة عامة على المقابس

أساسيات الاتصال الشبكي

نظرة عامة على المقابس درس مجاني في C Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C Academy 4 دروس في المجموع.

ما هو المقبس

إن المقبس هو نقطة نهاية للاتصال الشبكي. وفي أنظمة POSIX يكون واصف ملف يمكنك القراءة منه والكتابة إليه، مما يتيح لبرنامجين تبادل البيانات عبر الشبكة أو عبر الجهاز نفسه.

نموذج العميل والخادم

تستخدم معظم تطبيقات الشبكة نموذج العميل والخادم:

  • يربط الخادم نفسه بعنوان وينتظر الاتصالات
  • يبدأ العميل اتصالًا بالخادم

بعد الاتصال، يرسل الطرفان البيانات ويستقبلانها.

TCP مقارنةً بـ UDP

هناك بروتوكولا نقل رئيسيان:

  • TCP (SOCK_STREAM): موثوق ومرتب وقائم على الاتصال
  • UDP (SOCK_DGRAM): سريع ولا يتطلب اتصالًا، وقد يسقط الحزم أو يعيد ترتيبها

استخدم TCP لضمان الصحة، وUDP للبث ذي زمن الاستجابة المنخفض.

إنشاء مقبس

يعيد استدعاء socket() واصف ملف. وتشمل الوسائط: عائلة العناوين (AF_INET لـ IPv4)، والنوع (SOCK_STREAM لـ TCP)، والبروتوكول (0 لاستخدام الافتراضي).

/* Conceptual: sockets need a network environment to run */
#include <sys/socket.h>
#include <netinet/in.h>

int create_tcp_socket(void) {
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    /* fd < 0 means error; check with perror */
    return fd;
}

هياكل عناوين المقابس

يوصَف عنوان IPv4 بواسطة struct sockaddr_in، الذي يحتوي على العائلة والمنفذ وعنوان IP. وتستقبل الدوال النوع العام struct sockaddr *، لذا عليك إجراء تحويل نوع.

#include <netinet/in.h>

void fill_addr(struct sockaddr_in *addr, unsigned short port) {
    addr->sin_family = AF_INET;
    addr->sin_port = htons(port);      /* host to network short */
    addr->sin_addr.s_addr = INADDR_ANY; /* all interfaces */
}

ترتيب البايتات مهم

تستخدم الشبكات الترتيب big-endian، أي ترتيب بايتات الشبكة. حوّل باستخدام:

  • htons / htonl للتحويل من المضيف إلى الشبكة (قصير/طويل)
  • ntohs / ntohl للتحويل من الشبكة إلى المضيف

حوّل المنافذ والعناوين دائمًا، وإلا ستتصل بالوجهة الخاطئة.

تحويل عنوان IP

تحوّل inet_pton عنوان IP نصيًا مثل "127.0.0.1" إلى الصيغة الثنائية المخزنة في sin_addr، بينما تعكس inet_ntop العملية لتحويله بغرض الطباعة.

#include <arpa/inet.h>
#include <netinet/in.h>

int set_ip(struct sockaddr_in *addr, const char *ip) {
    return inet_pton(AF_INET, ip, &addr->sin_addr); /* returns 1 on success */
}

تسلسل استدعاءات الخادم

يستدعي خادم TCP عادةً، بالترتيب:

  • socket() للإنشاء
  • bind() للربط بعنوان ومنفذ
  • listen() لوضع المقبس في حالة الاستماع
  • accept() للحصول على اتصال

تسلسل استدعاءات العميل

يكون عميل TCP أبسط:

  • socket() للإنشاء
  • connect() للاتصال بعنوان الخادم

بعد ذلك يمكنه استخدام send وrecv على واصف الملف نفسه.

الإرسال والاستقبال

استخدم send() وrecv()، أو write() وread() العامتين. قد تنقل كل منهما عددًا من البايتات أقل من العدد المطلوب، لذلك تكرّر الشيفرة الفعلية العملية حتى تتم معالجة جميع البيانات.

تحقّق دائمًا من القيم المعادة

قد يفشل أي استدعاء للمقبس. تؤدي القيمة -1 إلى ضبط errno؛ استدعِ perror للإبلاغ عن الخطأ. تعني قيمة recv البالغة 0 أن الطرف الآخر أغلق الاتصال. يعتمد نجاح برمجة الشبكات المتينة على التحقق من الأخطاء.

اختبار سريع

اختبر مدى فهمك لأساسيات المقابس.

مراجعة

لقد تعلّمت أساسيات برمجة المقابس.

  • المقبس نقطة نهاية شبكية وواصف ملف
  • نموذج العميل والخادم باستخدام TCP الموثوق أو UDP السريع
  • استخدم sockaddr_in مع htons وinet_pton
  • الخادم: socket، ثم bind، ثم listen، ثم accept. العميل: socket، ثم connect

الأسئلة الشائعة

هل درس «نظرة عامة على المقابس» مجاني؟

نعم — نص درس «نظرة عامة على المقابس» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C Academy 4 دروس في المجموع.

ماذا ستتعلم في «نظرة عامة على المقابس»؟

أساسيات الاتصال الشبكي تتمرن على C Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C Academy؟

لا تُشترط خبرة سابقة. C Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «نظرة عامة على المقابس»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C Academy هذا؟

نعم. كل درس في C Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. نظرة عامة على المقابس
  2. خادم TCP
  3. عميل TCP
  4. معالجة عدة عملاء
← العودة إلى C Academy