إنشاء تطبيق خادم عميل مع C Socket.
استنساخ المشروع والقرص المضغوط في الدليل الرئيسي.
افتح محطة وقم بإعداد الخادم الخاص بك مع الأمر التالي:
./server [port]يجب أن تحصل على نتيجة مثل هذا:
Listening on 0.0.0.0:8080بعد ذلك الاتصال بالخادم مع عميلك باستخدام هذا الأمر:
./client [IP] [port]برمجة المقبس هي وسيلة لتوصيل العقدتين على شبكة للتواصل مع بعضها البعض. يستمع أحد المقبس (العقدة) على منفذ معين في عنوان IP ، بينما يتواصل المقبس الآخر إلى الآخر لتشكيل اتصال. يشكل الخادم مقبس المستمع بينما يتواصل العميل إلى الخادم.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );بعد إنشاء المقبس ، تربط وظيفة ربط المقبس بالعنوان ورقم المنفذ المحدد في Addr (بنية البيانات المخصصة). في رمز المثال ، نربط الخادم بالمضيف المحلي ، وبالتالي نستخدم Inaddr_any لتحديد عنوان IP.
int listen ( int sockfd , int backlog );يضع مقبس الخادم في وضع سلبي ، حيث ينتظر أن يتناول العميل الخادم لإجراء اتصال. يعرّف المتراكم الحد الأقصى للطول الذي قد تنمو فيه قائمة انتظار الاتصالات المعلقة لـ SockFD. إذا وصل طلب اتصال عند امتلاء قائمة الانتظار ، فقد يتلقى العميل خطأً مع إشارة إلى econnrefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );يقوم باستخراج طلب الاتصال الأول في قائمة انتظار الاتصالات المعلقة لمقبس الاستماع ، SockFD ، ويقوم بإنشاء مقبس متصل جديد ، ويعيد واصف ملف جديد يشير إلى هذا المقبس. في هذه المرحلة ، يتم إنشاء الاتصال بين العميل والخادم ، وهم جاهزون لنقل البيانات.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );يقوم استدعاء النظام Connect () بتوصيل المقبس المشار إليه بواسطة SockFD واصف الملف إلى العنوان المحدد بواسطة Addr. يتم تحديد عنوان الخادم ومنفذه في Addr.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );باستخدام PTREAD لإنشاء مؤشر ترابط لكل عملاء من عملائنا والتعامل معهم بطريقة محددة.