سادہ C++ ویب سرور

Sad C Wyb Srwr



اس مضمون میں، ہم C++ میں ویب سرورز کے بارے میں جانیں گے۔ ویب سرور کا بنیادی مقصد آنے والی HTTP درخواستوں کو ہینڈل کرنا، آنے والی تمام درخواستوں پر کارروائی کرنا، اور بدلے میں ویب HTML مواد کے ساتھ جواب دینا ہے۔ ہمیں نیٹ ورکنگ کمیونیکیشنز اور مسائل کو سنبھالنے کے لیے صرف C++ ماحول میں نیٹ ورکنگ لائبریریاں، جیسے 'ساکٹ' شامل کرکے C++ میں ویب سرور کو برقرار رکھنے کی ضرورت ہے۔ ویب سرور انٹرنیٹ کی ریڑھ کی ہڈی ہے اور صارفین اور مین سرورز کے درمیان رابطے کا ایک طریقہ ہے۔ آئیے مناسب مثال کے نفاذ کے ذریعے ایک سادہ ویب سرور بنانے کے عمل کا جائزہ لیں۔

ماحول کو ترتیب دینا

ہمیں پہلے اپنے ماحول میں تمام مطلوبہ اختیارات کو ترتیب دینے کی ضرورت ہے۔ ہمیں آنے والی HTTP درخواستوں کو سننے کے لیے ساکٹ کو استعمال کرنے کی ضرورت ہے۔ اس کے بعد، ہم ساکٹ کو اپنے سسٹم کے طور پر میزبان مشین پر مخصوص پورٹ سے باندھ دیتے ہیں۔ اس کے بعد، جب کلائنٹ درخواست کے لیے کال کرتے ہیں، تو سرور ان آنے والی منسلک درخواستوں کو سنتا ہے۔ سرور HTTP درخواستوں کے ذریعے صارف کی درخواستوں کا جواب دیتا ہے تاکہ صارف کی درخواست کو سرور تک پہنچایا جا سکے۔ اس کے بعد، سرور درخواست کو سنبھالتا ہے اور مناسب کرافٹنگ کے ساتھ صارف کو HTTP جوابات واپس کرتا ہے۔







ویب سرور کی ساکٹ ہینڈلنگ

اس سیشن میں، ہم یہ سیکھیں گے کہ ساکٹ ہمارے سسٹم میں چلنے والے مختلف عملوں کے درمیان کمیونیکیشن بناتے ہیں۔ ساکٹ بنیادی طور پر کلائنٹ کے براؤزر اور ہمارے سرور کے درمیان مواصلت یا کنکشن بنانے کے لیے استعمال ہوتے ہیں۔ ساکٹ کا کنکشن C++ میں اس طرح بنایا گیا ہے جس کا ذکر درج ذیل میں کیا گیا ہے۔



یہاں، ہم ساکٹ کے لیے لائبریریوں کو '#include ' کے طور پر بیان کریں گے۔ مین فنکشن میں، ہم 'server_fd' کو شروع کرکے ساکٹ بناتے ہیں۔ اس کے بعد، ہم 'server_fd' کی قدر چیک کرتے ہیں جس میں اسٹاک کنکشن کی توثیق ہوتی ہے۔ اگر سرور ڈاؤن ہے اور ٹھیک کام نہیں کر رہا ہے، تو یہ 'ساکٹ تخلیق ناکام' پیغام واپس کرتا ہے یا دکھاتا ہے۔ بصورت دیگر، جس پیغام میں ویب سرور کا آئی پی ایڈریس ہے وہ ویب سرور پر ایچ ٹی ایم ایل کا ڈیٹا دکھائے گا۔



# شامل کریں
#include
#include
اہم int ( ) {
int server_fd = ساکٹ ( AF_INET، SOCK_STREAM، 0 ) ;
اگر ( server_fd == - 1 ) {
std::cerr << 'ساکٹ تخلیق ناکام ہو گیا' ;
واپسی -1 ;
}
// اور
// {
// std::cout << 'باہر نکلیں' ;
// }
// باندھنا
std::cout << 'http//:127.0.0.1:8080' ;
// مزید کوڈ یہاں جاتا ہے۔
واپسی 0 ;
}


اس کوڈ کا آؤٹ پٹ درج ذیل میں منسلک ہے:






اس سے ظاہر ہوتا ہے کہ ویب سرور کے ساتھ جڑنے کے لیے ساکٹ C++ میں کامیابی کے ساتھ بنایا گیا ہے۔

C++ میں ویب سرور ہینڈلنگ

سسٹم کا ویب سرور مختلف C++ تصورات جیسے مرج چھانٹنا، لکیری چھانٹنا وغیرہ کو سنبھالنے کے لیے ترتیب دیا گیا ہے۔ اہم نیٹ ورکنگ لائبریریوں کو شروع کرنا یاد رکھیں۔ ویب سرور مقامی مشین (127.0.0.1) پر چلتا ہے اور پورٹ 8080 پر سنتا ہے۔



C++ پروگرامنگ زبان میں ضروری لائبریریوں کو درج ذیل شامل کریں:

# شامل < فروغ / asio.hpp >


یاد رکھیں کہ C++ میں ویب سرور بنانا کوئی آسان اور وقت طلب عمل نہیں ہے۔ ہم 'async_accept' کا استعمال کرتے ہوئے آنے والے کنکشن کو سنبھال سکتے ہیں۔

ویب سرور پر C++ کوڈ میں سرور کے جوابات

سرور کا جواب HTTP ہونا چاہیے جو براؤزر پر کام کرتا ہے اور ویب صفحہ پر HTML منظر پر آؤٹ پٹ دکھاتا ہے۔ تمام لائبریریاں سرورز کا انتظام کرتی ہیں اور تمام درست درخواستوں کو ہینڈل کرتی ہیں۔

ویب سرور کا پابند اور سننا

اس کے بعد، ہمیں ویب سرور کے بائنڈنگ اور سننے کے بارے میں جاننے کی ضرورت ہے تاکہ ویب پیج پر کوڈ کو آسانی سے عمل میں لایا جا سکے۔ اس کے بعد، ہمیں ساکٹ کو اپنے سسٹم کے دیے گئے ایڈریس، بنیادی طور پر آئی پی ایڈریس اور پورٹ سے منسلک کرنے کی ضرورت ہے جس پر یہ ساکٹ فعال ہیں۔ بندرگاہ پر، ہم آنے والے رابطوں کے لیے سننا شروع کر دیتے ہیں۔

ہمیں پابند کرنے اور لنک کرنے کے لیے چند لائبریریوں کو شروع کرنے کی ضرورت ہے۔

Sockaddr_in پتہ؛


ہم سرور کو باندھ سکتے ہیں۔ اگر سرور ڈاؤن ہے یا کنیکٹ نہیں ہے، تو پیغام کسی بھی براؤزر کے ویب پیج پر ظاہر نہیں ہوتا ہے۔

ویب سرور سے رابطوں کو قبول کرنا

اس سیکشن میں، ہم سیکھیں گے کہ ہم کلائنٹ کی درخواستوں کے بہاؤ کو کیسے کنٹرول کر سکتے ہیں۔ سرور HTTP پروٹوکول کے ذریعے کلائنٹ کی تمام درخواستوں کو قبول کرتا ہے۔ سرور ساکٹ اس پیغام کے سائز کی نشاندہی کرتا ہے جو کلائنٹ سے ویب سرور پر موصول ہوتا ہے۔ پیغام میں سرور ساکٹ کنکشن اور ایڈریس زیادہ واضح اور منفرد ہے۔ ہم چیک کرتے ہیں کہ آیا سرور کو جواب دینے کی ضرورت ہے اگر صارف کا ساکٹ ملتا ہے یا نہیں۔ اگر صارف ساکٹ کنکشن نہیں ملتا ہے، تو ہم ویب سرور سے کنکشن قبول نہیں کر سکتے۔

صارف اور سرور اینڈ سے ڈیٹا بھیجنے اور وصول کرنے کے طریقے

ساکٹ لنکس بنانے اور کنکشن کو قبول کرنے کے بعد، اگلی چیز سرور سائیڈ پر ڈیٹا بھیجنا اور مختلف کلیدی الفاظ استعمال کرتے ہوئے سرور سے ڈیٹا وصول کرنا اور C++ میں ڈیٹا بھیجنے اور وصول کرنے سے متعلق فنکشنز بنانا ہے۔ یہاں، ہم ڈیٹا کے جواب کو چیک کرتے ہیں۔ کیا یہ درخواست ڈیٹا حاصل کرنے کے لیے ہے یا ویب سرور سے ڈیٹا پوسٹ کرنے کے لیے؟ ہم کلائنٹ کی درخواست کے جواب کی حیثیت کو چیک کرتے ہیں۔ ہم ویب سرور پر پیغام یا آؤٹ پٹ کو ظاہر کرنے کے لیے کلائنٹ کی تمام درخواستوں کو عارضی طور پر بفر پر اسٹور کرتے ہیں۔

C++ میں لکیری چھانٹنا

آئیے یہاں لکیری چھانٹی کو انجام دیتے ہیں اور آسانی سے ویب سرور پر لکیری چھانٹی کا نتیجہ ظاہر کرتے ہیں۔ لکیری چھانٹی کا کوڈ کا ٹکڑا درج ذیل میں منسلک ہے:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
void LinearSearch ( int arr [ ] , int len, int شے ) {
کے لیے ( int میں = 0 ؛میں < len;i++ ) {
اگر ( arr [ میں ] == آئٹم ) {
cout << آئٹم << 'انڈیکس میں ملا:' << میں؛
واپسی ;
}
}
cout << 'نہیں ملا' ;
}
اہم int ( ) {
int arr [ ] = { 10 , 5 , پندرہ , اکیس , - 3 , 7 } ;
int len ​​= sizeof ( arr ) / کا سائز ( arr [ 0 ] ) ;
int آئٹم = اکیس ;
لکیری تلاش ( arr، len، آئٹم ) ;
واپسی 0 ;
}


اس مثال میں، ہم آئٹم '21' کو تلاش کرتے ہیں جس کے اشاریہ پر۔ تو، ہم اس کوڈ کو چلاتے ہیں۔ اس کوڈ کا آؤٹ پٹ درج ذیل میں منسلک ہے:


یہ آؤٹ پٹ اب ویب سرور پر کھلا ہے جیسے کسی بھی براؤزر میں جیسے کروم، ایج وغیرہ۔

آؤٹ پٹ ڈسپلے کے بعد تمام کنکشن ختم کریں۔

یہ ویب سرور پر ڈیٹا کو سنبھالنے کا آخری مرحلہ ہے۔ مطلوبہ آؤٹ پٹ کو انجام دینے کے بعد ساکٹ کنکشن کو بند کرنا یاد رکھیں۔ ہم یہاں 'close(server_id)' اور 'close (کلائنٹ ساکٹ)' جیسے فنکشنز کا استعمال کرتے ہوئے ساکٹ کو بند کرتے ہیں۔

سرور چلانے کے اختتام پر، متوقع آؤٹ پٹ ویب صفحہ پر 'http//localhost:8080' کے طور پر ایڈریس تک رسائی کے ذریعے ظاہر ہوتا ہے۔

نتیجہ

اس مضمون کے آخر میں، ہم کہہ سکتے ہیں کہ C++ میں سادہ ویب سرور ہینڈلنگ واقعی پیچیدہ ہے اور HTTP کلائنٹ کی درخواست بھیجنے اور وصول کرنے کے لیے مکمل توجہ کی ضرورت ہے۔ ہم ویب صفحہ پر مواد کو متحرک طور پر ظاہر کرنے کے لیے ویب سرور کی فعالیت کو بڑھا سکتے ہیں۔ امید ہے کہ، یہ مضمون آپ کے لیے مددگار ثابت ہوگا، اور آپ ان مثالوں کو اپنے ماحول پر چلا کر ان اقدامات کو سمجھ سکتے ہیں جو C++ میں ایک سادہ ویب سرور بنانے کے لیے درکار ہیں۔