في عالم اليوم، تلعب شبكات الكمبيوتر دورًا مهمًا في مجال نقل البيانات. وهو موضوع يجب أن يعرفه كل مبرمج. في ظل شبكة الكمبيوتر تعتبر برمجة المقبس من أهم المواضيع في عالم البرمجة. سنتحدث في هذا الموضوع عن برمجة المقبس والطرق المختلفة لبرمجة المقبس التي يتم تنفيذها في لغة C++.
في لغة C++، تعد برمجة المقبس طريقة تجمع بين عقدتين أو أكثر مع بعضها البعض عبر شبكة بحيث تتمكن العقد من مشاركة البيانات دون أي فقدان للبيانات. وفي هذا الصدد، تستمع عقدة واحدة إلى منفذ واحد متصل بعنوان IP معين. عندما يصل العميل إلى الخادم، يقوم الخادم بإنشاء مستمع المقبس.
ما هو المقبس؟
دعونا نفهم المقبس من خلال الحديث عن المثال في الوقت الحقيقي. المقبس هو نوع من الوسائط التي توفر اتصالاً بين جهازين. يمكن أن يكون المقبس إما شاحن هاتف يوفر الاتصال بين المقبس والهاتف أو الهاتف والكمبيوتر المحمول. بمساعدة المقبس، يتم توصيل تطبيقات مختلفة بالشبكة المحلية بمنافذ مختلفة. في كل مرة يتم فيها إنشاء المقبس، يحدد الخادم البرنامج، ويحدد هذا البرنامج المقبس وعنوان المجال.
فرز فقاعة جافا
المقبس هو نوع من الآليات المستخدمة لتبادل البيانات بين العمليات المختلفة. توجد هذه العمليات هنا إما في أجهزة مختلفة أو في نفس الجهاز المتصل عبر الشبكة. بمجرد إنشاء اتصال المقبس، يمكن إرسال البيانات في كلا الاتجاهين وتستمر حتى تقوم إحدى نقاط النهاية بإغلاق الاتصال.
الإجراء في الاتصال بين العميل والخادم
هناك بعض الإجراءات التي يتعين علينا اتباعها لإنشاء اتصال بين العميل والخادم. هذه هي كما يلي.
مراحل إنشاء مقبس الخادم
هناك بعض المراحل التي يمكننا من خلالها إنشاء المقبس للخادم. هذه هي كما يلي.
ما هو الاتصال؟
الاتصال هو نوع من العلاقة بين جهازين حيث يكون البرنامجان معروفين عن بعضهما البعض. يعرف هذان البرنامجان كيفية إنشاء اتصال مع بعضهما البعض؛ بمعنى آخر، يمكننا القول أن هذين البرنامجين يعرفان كيفية إرسال البتات عبر الشبكة. ويعني اتصال المقبس أن الجهازين يجب أن يعرفا جميع المعلومات فيما بينهما، مثل رقم الهاتف وعنوان IP ومنفذ TCP.
قم بتشغيل جافا
المقبس هو نوع من الكائنات يشبه الملف الذي يسمح للبرنامج بقبول الاتصال الوارد والسماح له بإرسال أو استقبال الاتصال الوارد. كما أنه نوع من الموارد المخصصة لعملية الخادم.
يمكن للخادم إنشاء المقبس بمساعدة المقبس (). لا يمكن مشاركة هذا المقبس مع أي معالج آخر.
مراحل للعميل
- المقبس الذي يمكن من خلاله توصيل البيانات مع بعضها البعض.
- يمكن لمخزن التخزين المؤقت تخزين بيانات حول العنوان، مثل addr_of_data وaddr_of_buffer.
- إنه يتعامل مع حجم المخزن المؤقت، مثل len_of_data و len_of_buffer.
- إنه يتعامل مع العلم الذي يوضح كيفية إرسال البيانات.
خطوات تأسيس الاتصال في المقبس
يقوم بإنشاء اتصال بين العملاء المختلفين والخادم. ولكن يمكن لكل من العميل والخادم التعامل مع اتصال المقبس. يجب على كل عملية إنشاء اتصال للمقبس الخاص بها.
الخطوات المتبعة لإنشاء مأخذ توصيل على جانب العميل هي كما يلي:
- يقوم بإنشاء مأخذ توصيل بمساعدة استدعاء النظام ()socket.
- ثم يتعين علينا الاتصال بعنوان مأخذ التوصيل الخاص بالخادم بمساعدة استدعاء النظام ().
- ثم يتعين علينا إرسال واستقبال البيانات. يمكننا القيام بذلك بطرق مختلفة. يمكننا القيام بوظيفة القراءة () والكتابة ().
الخطوات المتبعة لإنشاء مأخذ توصيل على جانب الخادم هي كما يلي:
كيفية الحصول على الرموز التعبيرية التفاح على الروبوت
- يقوم أولاً بإنشاء مأخذ توصيل بمساعدة استدعاء نظام مأخذ التوصيل ().
- ثم يقوم بربط المقبس بعنوان ما بمساعدة استدعاء النظام bind(). يتكون العنوان من رقم منفذ لمقبس الخادم الموجود في الجهاز المضيف.
- ثم يستمع للاتصال بمساعدة استدعاء نظام الاستماع ().
- ثم يقبل الخادم الاتصال الوارد بمساعدة استدعاء النظام Accept(). كما أنه يحظر جميع الأوامر الواردة حتى يتصل العميل بالخادم.
- ثم تبدأ عملية إرسال واستقبال البيانات.
توصيل عملاء متعددين دون تعدد مؤشرات الترابط
هناك العديد من الأمثلة التي نرى فيها كيف يمكن لمستخدم واحد الاتصال بالخادم. في عالم البرمجة اليوم، يتصل العديد من المستخدمين بالخادم بمآخذ توصيل مختلفة.
هناك طرق مختلفة لتحقيق ذلك. واحد منهم هو تعدد الخيوط. بمساعدة تعدد العمليات، يمكننا تحقيق ذلك. يمكننا تنفيذ عملية تعدد مؤشرات الترابط بمساعدة وظيفة التحديد ().
مثال:
الكود الخاص بالعميل:
// Client side C/C++ program to demonstrate Socket // programming #include #include #include #include #include #define PORT 8080 int main(int argc, char const* argv[]) { int sock = 0, valread, client_fd; struct sockaddr_in serv_addr; char* hello = 'Hello from client'; char buffer[1024] = { 0 }; if ((sock = socket(AF_INET, SOCK_STREAM, 0)) <0) 0 8080 { printf(' socket creation error '); return -1; } serv_addr.sin_family="AF_INET;" serv_addr.sin_port="htons(PORT);" convert ipv4 and ipv6 addresses from text to binary form if (inet_pton(af_inet, '127.0.0.1', &serv_addr.sin_addr) <="0)" printf( ' invalid address not supported ((client_fd="connect(sock," (struct sockaddr*)&serv_addr, sizeof(serv_addr))) 0) printf(' connection failed send(sock, hello, strlen(hello), 0); printf('hello message sent '); valread="read(sock," buffer, 1024); printf('%s ', buffer); closing the connected close(client_fd); 0; code for server: server side c c++ program demonstrate programming #include #define port int main(int argc, char const* argv[]) server_fd, new_socket, valread; struct sockaddr_in address; opt="1;" addrlen="sizeof(address);" buffer[1024]="{" }; char* hello="Hello from server" ; creating file descriptor ((server_fd="socket(AF_INET," sock_stream, 0)) perror('socket failed'); exit(exit_failure); forcefully attaching (setsockopt(server_fd, sol_socket, so_reuseaddr | so_reuseport, &opt, sizeof(opt))) perror('setsockopt'); address.sin_family="AF_INET;" address.sin_addr.s_addr="INADDR_ANY;" address.sin_port="htons(PORT);" (bind(server_fd, sockaddr*)&address, sizeof(address)) perror('bind (listen(server_fd, 3) perror('listen'); ((new_socket="accept(server_fd," (socklen_t*)&addrlen)) perror('accept'); send(new_socket, close(new_socket); listening shutdown(server_fd, shut_rdwr); pre> <p> <strong>Compiling:</strong> </p> <img src="//techcodeview.com/img/c-tutorial/33/socket-programming-c-c-2.webp" alt="Socket Programming in C/C++"> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/c-tutorial/33/socket-programming-c-c-3.webp" alt="Socket Programming in C/C++"> <h2>Uses of Socket Programming</h2> <p>Socket programs are used to communicate between various processes, usually running on different systems. It is mostly used to create a client-server environment. This post provides the various functions used to create the server and client program and an example program.</p> <p>In the example, the client program sends a file name to the server, and the server sends the contents of the file back to the client. Socket programming usually pertains to basic communication protocols like TCP/UDP and raw sockets like ICMP. These protocols have a small communication overhead when compared to underlying protocols such as HTTP/DHCP/SMTP etc.</p> <p> <strong>Some of the basic data communications between the client and server are:</strong> </p> <ul> <li>File Transfer: Sends name and gets a file.</li> <li>Web Page: Sends URL and gets a page.</li> <li>Echo: Sends a message and gets it back.</li> </ul> <h2>Disadvantages</h2> <ul> <li>C++ can establish communication only with the machine requested and not with any other machine on the network.</li> <li>Sockets allow only raw data to be sent. This means that the client and server need mechanisms to interpret the data.</li> </ul> <hr></0)>