يُطلق على المقبس أيضًا اسم "المقبس". عادةً ما ترسل التطبيقات طلبات إلى الشبكة أو تستجيب لطلبات الشبكة من خلال "المقبس"، حتى يتمكن المضيفون أو العمليات الموجودة على جهاز الكمبيوتر من التواصل.
سنعلمك في هذا الفصل كيفية استخدام خدمة المقبس في لغة بيرل.
استخدم وظيفة المقبس لإنشاء خدمة مأخذ التوصيل.
استخدم وظيفة الربط لربط المنفذ.
استخدم وظيفة الاستماع للاستماع إلى المنفذ.
استخدم وظيفة القبول لتلقي طلبات العملاء.
استخدم وظيفة المقبس لإنشاء خدمة مأخذ التوصيل.
استخدم وظيفة الاتصال للاتصال بخادم المقبس.
يوضح الرسم البياني التالي عملية الاتصال بين العميل والخادم:

في لغة Perl، نستخدم وظيفة المقبس () لإنشاء مأخذ توصيل. تنسيق بناء الجملة كما يلي:
المقبس (SOCKET، DOMAIN، TYPE، PROTOCOL)؛
تحليل المعلمة:
يحدد المقبس الذي تم إنشاؤه بواسطة DOMAIN مجموعة البروتوكولات. على سبيل المثال:
يمثل AF_INET بروتوكول شبكة IPv4
AF_INET6 يعني IPv6
AF_UNIX يعني المقبس المحلي (باستخدام ملف)
يمكن تصنيف أنواع مآخذ التوصيل TYPE على أنها SOCK_STREAM أو SOCK_DGRAM اعتمادًا على ما إذا كانت موجهة للاتصال أم غير متصلة
يجب أن يكون PROTOCOL (getprotobyname('tcp'))[2] . يحدد بروتوكول النقل الفعلي المستخدم.
لذا فإن طريقة استدعاء دالة المقبس هي كما يلي:
استخدم المقبس # تعريف PF_INET وSOCK_STREAMsocket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2]);استخدم bind() لتعيين عنوان للمقبس:
ربط (SOCKET، ADDRESS)؛
SOCKET واصف المقبس. ADDRESS هو عنوان مأخذ التوصيل (TCP/IP) الذي يحتوي على ثلاثة عناصر:
مجموعة العناوين (TCP/IP، هي AF_INET، ربما 2 على نظامك)
رقم المنفذ (على سبيل المثال 21)
عنوان الشبكة (على سبيل المثال 10.12.12.168)
بعد إنشاء مأخذ توصيل باستخدام مأخذ التوصيل () ، يتم منحه البروتوكول المستخدم فقط، ولا يتم تعيين أي عنوان. قبل قبول الاتصالات من مضيفين آخرين، يجب استدعاء bind() لتعيين عنوان للمقبس.
مثال بسيط هو كما يلي:
استخدم المقبس # يتم تعريف PF_INET وSOCK_STREAM $port = 12345; # منفذ الاستماع $server_ip_address = "10.12.12.168";bind( SOCKET, pack_sockaddr_in($port, inet_aton($server_ip_address))) أو die "غير قادر على ربط المنفذ! ن"؛
أو يتم تنفيذ الموت بعد الفشل في ربط العنوان.
يمكن إعادة استخدام إعداد المنفذ على الفور عن طريق تعيين خيار setockopt() SO_REUSEADDR.
تقوم الدالة pack_sockaddr_in() بتحويل العنوان إلى تنسيق ثنائي.
بعد ربط المقبس بعنوان ما، ستبدأ وظيفة الاستماع () في الاستماع لطلبات الاتصال المحتملة. ومع ذلك، لا يمكن استخدام هذا إلا عندما يتم ضمان تدفق موثوق للبيانات:
استمع (SOCKET، QUEUESIZE)؛
SOCKET: واصف المقبس.
QUEUESIZE: هو عدد صحيح يحدد حجم قائمة انتظار الاستماع، وسيدخل إلى قائمة انتظار الاستماع عند وصول طلب اتصال؛ قائمة الانتظار ممتلئة، اتصال جديد سيعرض الطلب خطأ.
بمجرد قبول الاتصال، يتم إرجاع 0 عند النجاح و-1 عند الخطأ.
تقبل الدالة Accept() اتصال المقبس المطلوب. إرجاع النموذج المضغوط لعنوان الشبكة إذا نجح، وإلا فسيتم إرجاع FALSE:
قبول (NEW_SOCKET، SOCKET)؛
NEW_SOCKET: واصف المقبس.
SOCKET: واصف المقبس.
يُستخدم Accept() عادةً في حلقات لا نهائية:
بينما (1) { قبول (NEW_SOCKET، SOCKT .....})؛يمكن للمثال أعلاه مراقبة طلبات العميل في الوقت الفعلي.
يقوم استدعاء النظام Connect() بإعداد اتصال للمأخذ، والمعلمات عبارة عن واصف ملف وعنوان مضيف.
الاتصال (SOCKET، ADDRESS)؛
يقوم ما يلي بإنشاء مثيل متصل بمقبس الخادم:
$port = 21; # منفذ ftp $server_ip_address = "10.12.12.168";
بعد ذلك، نستخدم مثالًا كاملاً لفهم تطبيق جميع وظائف المقبس:
رمز الخادم server.pl:
افتح المحطة وقم بتنفيذ الكود التالي:
$ Perl Sever.pl يبدأ الوصول: 7890
رمز العميل client.pl:
افتح محطة أخرى وقم بتنفيذ الكود التالي:
$ Perl client.pl أنا المعلومات من الخادم