خادم ويب بسيط C++

Khadm Wyb Bsyt C



في هذه المقالة سوف نتعرف على خوادم الويب في لغة C++. الغرض الرئيسي من خادم الويب هو التعامل مع طلبات HTTP الواردة، ومعالجة جميع الطلبات القادمة، والرد بمحتوى HTML على الويب في المقابل. نحتاج إلى صيانة خادم الويب بلغة C++ فقط عن طريق إضافة مكتبات الشبكات في بيئة C++، مثل 'المآخذ'، للتعامل مع اتصالات الشبكة ومشكلاتها. خادم الويب هو العمود الفقري للإنترنت وهو وسيلة للتواصل بين المستخدمين والخوادم الرئيسية. دعونا نقيم عملية إنشاء خادم ويب بسيط من خلال أمثلة التنفيذ المناسبة.

تهيئة البيئة

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







التعامل مع مآخذ التوصيل لخادم الويب

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



هنا، سوف نقوم بتعريف مكتبات المقابس على أنها '#include '. في الوظيفة الرئيسية، نقوم بإنشاء المقبس عن طريق تهيئة 'server_fd'. بعد ذلك نقوم بالتحقق من قيمة “server_fd” الذي يحتوي على التحقق من صحة اتصال المخزون. إذا كان الخادم معطلاً ولا يعمل بشكل جيد، فإنه يعرض أو يعرض رسالة 'فشل إنشاء المقبس'. وإلا فإن الرسالة التي تحتوي على عنوان IP الخاص بخادم الويب ستعرض بيانات HTML على خادم الويب.



#تشمل
#تشمل
#تشمل
انت مين ( ) {
int server_fd = المقبس ( AF_INET، SOCK_STREAM، 0 ) ;
لو ( server_fd == - 1 ) {
الأمراض المنقولة جنسيا::cerr << 'فشل إنشاء المقبس' ;
يعود -1 ;
}
// آخر
// {
// الأمراض المنقولة جنسيا::كوت << 'مخرج' ;
// }
// ربط
الأمراض المنقولة جنسيا::كوت << 'http://:127.0.0.1:8080' ;
// رمز إضافي يذهب هنا
يعود 0 ;
}


يتم إرفاق إخراج هذا الكود في ما يلي:






يوضح هذا أنه تم إنشاء المقبس بنجاح في C++ للاتصال بخادم الويب.

التعامل مع خادم الويب في C++

تم إعداد خادم الويب الخاص بالنظام للتعامل مع مفاهيم C++ المختلفة مثل فرز الدمج والفرز الخطي وما إلى ذلك. تذكر تهيئة مكتبات الشبكات المهمة. يعمل خادم الويب على الجهاز المحلي (127.0.0.1) ويستمع على المنفذ 8080.



تضمين المكتبات اللازمة في لغة البرمجة C++ كما يلي:

# يشمل < يعزز / asio.hpp >


تذكر أن إنشاء خادم ويب بلغة C++ ليست عملية سهلة وتستغرق وقتًا طويلاً. يمكننا التعامل مع الاتصالات الواردة باستخدام 'async_accept'.

استجابات الخادم في كود C++ على خادم الويب

يجب أن تكون استجابة الخادم HTTP والتي تعمل على المتصفح وتُظهر المخرجات في عرض HTML على صفحة الويب. تقوم جميع المكتبات بإدارة الخوادم والتعامل مع جميع الطلبات الصالحة.

الربط والاستماع لخادم الويب

بعد ذلك، نحتاج إلى معرفة كيفية ربط خادم الويب والاستماع إليه لتنفيذ التعليمات البرمجية على صفحة الويب بسهولة. بعد ذلك، نحتاج إلى ربط المقبس بالعنوان المحدد لنظامنا، وهو عنوان IP والمنفذ الذي تنشط عليه هذه المقابس. على المنفذ، نبدأ في الاستماع للاتصالات الواردة.

نحن بحاجة إلى تهيئة المكتبات القليلة للربط والربط.

عنوان Sockaddr_in؛


يمكننا ربط الخادم. إذا كان الخادم معطلاً أو غير متصل، فلن يتم عرض الرسالة على صفحة الويب لأي متصفح.

قبول الاتصالات بخادم الويب

في هذا القسم سوف نتعلم كيف يمكننا التحكم في تدفق طلبات العميل. يقبل الخادم جميع طلبات العميل من خلال بروتوكول HTTP. يشير مقبس الخادم إلى حجم الرسالة التي يتم تلقيها على خادم الويب من العميل. تحتوي الرسالة على اتصال مأخذ توصيل الخادم والعنوان بشكل أكثر وضوحًا وتفردًا. نتحقق مما إذا كان الخادم بحاجة إلى الاستجابة إذا تم العثور على مقبس المستخدم أم لا. إذا لم يتم العثور على اتصال مقبس المستخدم، فلا يمكننا قبول الاتصال بخادم الويب.

طرق إرسال واستقبال البيانات من المستخدم ونهاية الخادم

بعد إنشاء روابط المقبس وقبول الاتصال، فإن الشيء التالي هو إرسال البيانات إلى جانب الخادم واستقبال البيانات من الخادم باستخدام كلمات رئيسية مختلفة وبناء الوظائف المتعلقة بإرسال واستقبال البيانات في C++. هنا، نتحقق من استجابة البيانات. هل هذا الطلب للحصول على البيانات أم لنشر البيانات من خادم الويب؟ نحن نتحقق من حالة الاستجابة لطلب العميل. نقوم مؤقتًا بتخزين كافة طلبات العميل على المخزن المؤقت لعرض الرسالة أو الإخراج على خادم الويب.

الفرز الخطي في C++

لنقم بإجراء الفرز الخطي هنا ونعرض نتيجة الفرز الخطي على خادم الويب بسهولة. مقتطف الكود الخاص بالفرز الخطي مرفق فيما يلي:

#تشمل
استخدام اسم للمحطة؛
البحث الخطي فارغ ( كثافة العمليات آر [ ] ، إنت لين، إنت بند ) {
ل ( كثافة العمليات أنا = 0 ؛أنا < لين;i++ ) {
لو ( وصول [ أنا ] == البند ) {
cout << غرض << ' موجود في الفهرس : ' << أنا؛
يعود ;
}
}
cout << 'غير معثور عليه' ;
}
انت مين ( ) {
كثافة العمليات آر [ ] = { 10 , 5 , خمسة عشر , واحد وعشرين ، - 3 , 7 } ;
int len ​​= sizeof ( وصول ) / حجم ( وصول [ 0 ] ) ;
عنصر كثافة العمليات = واحد وعشرين ;
البحث الخطي ( آر، لين، البند ) ;
يعود 0 ;
}


في هذا المثال، نقوم بالبحث في العنصر '21' حيث يوجد الفهرس. لذلك، نقوم بتشغيل هذا الرمز. يتم إرفاق إخراج هذا الكود في ما يلي:


هذا الإخراج مفتوح الآن على خادم الويب كما هو الحال في أي متصفح مثل Chrome وEdge وما إلى ذلك.

قم بإنهاء كافة الاتصالات بعد عرض الإخراج

هذه هي الخطوة الأخيرة في التعامل مع البيانات الموجودة على خادم الويب. تذكر إغلاق اتصالات المقبس بعد إجراء الإخراج المطلوب. نغلق المقبس هنا باستخدام وظائف مثل 'إغلاق (server_id)' و'إغلاق (مقبس العميل)'.

في نهاية تشغيل الخادم، يتم عرض المخرجات المتوقعة على صفحة الويب عن طريق الوصول إلى العنوان 'http://localhost:8080'.

خاتمة

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