سپیکر: اب چلو ڈوبکی تقسیم کے کوڈ میں
اور سیاق و سباق پر ایک نظر ڈالیں جس میں کوڈ کو آپ لکھتے ہیں
آپریٹنگ ہونے جا رہا ہے.
دن کے آخر میں، آپ کو نافذ کرنے جا رہے ہیں
ویب سرور کے مکمل.
لیکن ہم نے فراہم کی ہے کنکال کے ساتھ آپ
کچھ فعالیت ہے کہ کوڈ، خاص طور پر نیٹ ورکنگ سے متعلق.
چلو ایک نظر ڈالیں.
>> یہاں سب سے اوپر کی طرف بلند اتنا فائل کا ٹولہ ہے
خصوصیت میں میکرو ضروریات کو ٹیسٹ.
اب اس سی، جس کے تحت صرف ایک خصوصیت ہے انسان کے صفحات میں سے ایک گروپ کے مطابق
آپ میں سے کچھ کی وضاحت کرنے کے لئے ہے ان constants سچ ہو گی
یا یہ کہ تو بھی خاص نمبرز بننا تم بعض افعال تک رسائی حاصل ہے.
دوسری صورت میں وہ پہلے سے نہ سوچا کریں گے اور آپ کو رسائی حاصل نہیں کرے گا.
تو میں نے راہ کی طرف سے اس نے کیا ہے کے انسان صفحات پڑھ.
اب نیچے ذیل، میں 17 ذریعے لائنوں 15، ہم
کا اعلان کر دیا حدود کی ایک مکمل جھوبڈ ہے.
>> اور ہم ایک کی طرف سے ان ادھار ہے اپاچی بلایا مقبول ویب سرور.
اور یہ صرف ہیں جا رہے ہیں کہ اعداد
کل تعداد ٹوپی بائٹس کی کہ اجازت ہے
HTTP درخواست کے لئے مختلف سیاق و سباق میں کہ ایک براؤزر مجھے بھیجنے کے لئے کی اجازت دی ہے.
اگلا، ہم آکٹیٹ کی وضاحت.
اب ایک آکٹیٹ ایک نفیس طریقہ ہے ایک بائٹ، یا آٹھ بٹس کہہ کے.
پرانے ایک بائٹ میں بدل جاتا ہے ضروری نہیں کہ آٹھ بٹس تھا،
تاکہ آکٹیٹ ہمیشہ آٹھ بٹیں ہے.
تو اس صورت میں ہم اپنایا ہے کیا نیٹ ورکنگ میں عام ہے
آٹھ بائٹس ایک آکٹیٹ بلا کی دنیا.
>> یہاں میں آکٹیٹ گے کہ مخصوص ہے تا کہ زیادہ سے زیادہ عدالتی میں جیسے، 512 ہو
ہم میں سے ایک گروپ پڑھا جب ایک وقت میں بائٹس، یہاں بھی،
ہم ایک پڑھنے جا رہے ہیں ایک وقت میں آکٹیٹ کے گروپ.
ہیڈر فائلوں کی ایک پوری چڑھانے اگلے.
میں کس طرح ان میں شامل کرنے کے لئے پتہ چلا؟
ویسے میں نے صرف انسان کو پڑھا کے افعال میں سے ایک بڑی تعداد کے لئے صفحات
ہم اس تقسیم میں استعمال کریں گے کوڈ اور ہیں میں شامل ہیں
میں نے کرنے کی ہدایت کی تھی.
>> اور اب ہم ایک ڈیٹا کی قسم ہے.
ہم نے ایک چار ہونا ایک آکٹیٹ اعلان کیا ہے.
اور ہم اس بات ہے کہ بعد میں دیکھیں گے کوڈ کے دوران استعمال کیا جاتا ہے.
اور ہم نے اعلان کر دیا ہے ایک prototypes کی مکمل جھوبڈ،
اور ہم ذریعے تیزی سے چل گے ان کے افعال میں سے ہر ایک.
آخر میں، اور شاید سب سے زیادہ میں رکھنا اہم
اس مرحلے میں برا کہانی، یہ ہے کہ وہاں
حقیقت میں، ایک پوری ہو عالمی متغیر کے گروپ
فائل کے سب سے اوپر، جڑ، CFD، ایس ایف ڈی، درخواست، فائل اور جسم.
>> اب عام طور پر، بہت سے عالمی سطح پر استعمال کر رہے ہیں متغیر، یا بالکل عالمی متغیر،
واپس پریکٹس نہیں ہے.
لیکن یہ ہم بھی ایک استعمال کر رہے ہیں باہر کر دیتا ہے تکنیک نامی سگنل ہینڈلنگ بعد میں
کرنے کی اجازت دیتا ہے جس کے کوڈ، میں صارف کچھ مار دیتی ہے جب پتہ لگانے کے
CTRL C اور نیچے بند کی طرح gracefully کو سرور.
اور حکم میں gracefully ایسا کرنے کے لئے اور اصل میں مفت میموری اپ،
ہم تک رسائی حاصل کرنے کی ضرورت ہے یہ عالمی متغیر.
>> اور اب کی مین پر ایک نظر ڈالیں، جس اس پروگرام کے مکمل طور پر چلاتے ہیں.
سب سے پہلے، یہاں سب سے اوپر ہم ایک خرابی تعداد میں متغیر ہے
کہ نہیں ظاہر ہوتا ہے ایک قسم ہے، لیکن ہے کہ
یہ اصل میں ہے کیونکہ نامی ایک فائل میں وضاحت کی گئی
غلطی کو errno.h جس میں اعلی اپ شامل ہے.
آپ اصل میں errno انسان ایسا کرتے ہیں اس بات کے لئے تعریف دیکھیں،
آپ کو یہ ایک ہے کہ نظر آئے گا خصوصی عالمی متغیر ہے کہ
ایک مکمل جھوبڈ کی طرف سے مقرر کیا گیا ہے افعال میں لکھا نہیں
ہماری طرف سے، لیکن لینکس کے مصنفین کی طرف سے اور دوسرے نظام اصل مقرر کرنے کے لئے
اس متغیر جب کچھ کے لئے ایک نمبر غلط ہوتا ہے کہ آپ عالمی سطح پر کر سکتے ہیں تاکہ
غلط جانے کیا کیا پتہ لگانے.
>> اب ذیل میں نیچے آپ کو ایک نئی نظر آئے گا ٹیکنالوجی کا شاید، getopt کا استعمال کرتے ہوئے
تصریف کمانڈ کی مدد کرتا ہے کہ ایک تقریب لائن کے دلائل ہم نہیں کرتے ہیں تاکہ
figuring ہے برباد کر وقت کی زحمت کی ضرورت باہر 8080 کی طرح کچھ تجزیہ کرنے کے لئے کس طرح،
یا ڈیش پی، یا ڈیش ح مدد حاصل کرنے کے.
getopt بنیادی طور پر ہمارے لئے ایسا کرتا ہے.
زیادہ کے لئے آدمی کا صفحہ ملاحظہ کریں.
>> اگلا، ہم غلطی کا سا کر بات کو یقینی بنانا پرکھنے
پورٹ نمبر اندر اندر ہے کہ رپورٹ میں مخصوص رینج.
اگلا، ہم تقریب ایک فون دیکھیں جن کی تعریف، ہم کریں گے شروع کر دیں
ایک لمحے میں میں نظر آتے ہیں، اور اس کے نام کے طور پر اس ویب سرور شروع ہوتا ہے، پتہ چلتا ہے.
یہاں ہم ایک تقریب ایک فون ہے کہتے ہیں جس کو بلایا سگنل،
اور اگر تم سے کنٹرول سی سنتے ہیں صارف کی بورڈ، آگے بڑھو اور کال
جا رہا ہے کہ ایک تقریب میں بلایا ہینڈلر بالآخر صاف چیزوں کو اور کو روکنے کے
سرور.
>> اس کے نیچے ایک ہو سکتا ہے کیا ہے لامحدود لوپ، پہلی سطر جن میں
مؤثر طریقے سے ایک کال ہے کے نام سے ایک تقریب میں
خود کو ہم جس میں، ری سیٹ ترتیب میں بعد میں عمل درآمد
ہمارے عالمی ریاستوں میں سے کچھ کو آزاد کرنا.
اس کے بعد کی ایک سطر ہے کوڈ اس مشروط
واپسی کی جانچ پڑتال کر رہا ہے کنیکٹیڈ کی قدر.
ایک ودیئ کی طرح اب مربوط دکھائی دیتی ہے، صحیح یا غلط واپس کہ کچھ اور.
اور یہ کرتا ہے، لیکن وہاں ہے کنیکٹیڈ میں کچھ خاص
کہ میں یہ ایک مسدود فون ہے.
یہ وہاں بیٹھ کر انتظار کریں گے ایک صارف کے براؤزر تک
اس ویب سے رابطہ قائم کرنے کی کوشش کرتا ہے سرور اور صرف اس صورت یہ ہو گا
ہم آگے بڑھنے، تا کہ صحیح یا غلط واپس آ جائیں اس بیان اگر اندر کرنے کے لئے.
>> ایک بار وہاں، ایک کے لئے اس تقریب کو نوٹس ہم نے لکھا، جس توڑتے نامی تقریب،،
جس میں تمام، آکٹیٹ کے تمام یہ parses ایک براؤزر کی طرف سے آ بائٹس کی
سرور سے، تاکہ ہم حوالے کر سکتے ہیں ایک کے لئے آپ کو واپس بالآخر ایک قدر
ان لوگوں کو عالمی متغیرات میں سے ہے کہ اسٹورز صرف میں بائٹس کی تمام
اس کا ہیڈر درخواست، نہ جسم
یہ اصل میں ایک جسم وہاں تھے تو.
>> اب ہم کرنے کے لئے شروع نیچے سے نیچے نکالنے کے لئے ان لوگوں ہیڈر تجزیہ
معلومات کا ایک اپسمچی ہم کے بارے میں پرواہ ہے.
خاص طور پر، فی تصریح، ہم سب سے پہلے
ہے جو، لائن کی درخواست کرنے کے لئے کرنا چاہتا تھا صرف یہ ہے کہ بہت پہلے کہ لائن
امید ہو جیسے کچھ کا کہنا ہے کہ سلیش یا کسی راستے اور پھر HTTP 1.1.
ہم اس استعارہ استعمال کر رہے ہیں ایک ٹیبل میں انجکشن کے
خاص طور پر کے لئے نظر کرنا حروف یا پتوں.
اور یقینا، کی ایک بڑی تعداد موجود ہے ہمارے تقسیم کے کوڈ میں افعال
آپ کہ، بھی، مفید ہو سکتا ہے خاص طور پر اقدار کے لئے تلاش کر جب.
>> آخر میں، ہم ان بائٹس کو کاپی ایک متغیر بلایا لائن میں،
جس کے بھی، ہم نے، کو نوٹس اسٹیک پر مختص
ایک متحرک درجے کی صف کی راہ کی طرف سے.
اور ہم نے جان بوجھ کر کوشش کر رہے ہیں malloc بلا سے بچنے کے لئے
پھر کیونکہ، کیونکہ کنٹرول C ہونے کا
اس پروگرام کی ایک ممکنہ نمایاں کریں، ہم اچانک اس کوڈ ہے نہیں کرنا چاہتا
صارف کو مارنے کی طرف سے رکاوٹ پیدا کنٹرول C، جس کے نتیجے میں
میں نے ایک موقع نہیں ہو سکتا ہے یہ ہے کہ مفت میں کچھ کے لئے میں نے malloced کر دیا ہے.
تو میں نے کے طور پر زیادہ استعمال کرنے کی کوشش کر رہا ہوں اسٹیک کے میں یہاں کر سکتے ہیں ہے.
>> اگلے ڈاس کرنے کے پورے گچرچھی، اپ.
تصریح بیان کریں گے یہاں توقع ہے بالکل وہی جو پر،
لیکن تبصرے آپ کو دے کیا میں سے ایک اشارہ آگے جھوٹ.
آپ کے لئے سب سے پہلے ضرورت درخواست لائن کی توثیق
اور اس طرح لگتا ہے کہ بات کو یقینی بنانے کے وضاحتیں، تو بات کرنے کی، گرائمر
یہ ہونا چاہئے کہتے ہیں.
اس کے بعد آپ کچھ نکالنے کے لئے کی ضرورت سامان، سوال نامی
ایک سوال کے نشان کے بعد، جیسے ہم اپنے گوگل مثال کے ساتھ دیکھا
ایک ایچ ڈی پیرامیٹر میں گزر میں.
ہم نے اس وقت ایک دوسرے کے ساتھ سلسلہ بندی ویب سرور کی جڑ
میں ہے کہ راستے کے ساتھ اس کی درخواست پہلی لائن
اور کا مکمل راستہ کی تشکیل فائل ہم نے کے لئے نظر کرنا چاہتے ہیں.
>> اس کے بعد، ہم اس بات کو یقینی بنانے کے لئے جا رہے ہیں وہ فائل موجود ہے اور پڑھنے کے قابل ہے.
اور پھر ہم کو نکالنے کے لئے جا رہے ہیں اس کے فائل چڑھانے کی کوشش، ایچ ٹی ایم ایل یا پی ایچ پی،
یا کم سے ہے کہ کچھ ایسی ملازمت میں توسیع درخواست کی سٹرنگ کے اختتام.
اپ اگلے ایک پوری ہے کوڈ کا جتھا ہم نے لکھا
دراصل پی ایچ پی پیدا کرنے کے لئے آپ کے لئے مواد پیدا.
ایک مختصر میں، اس خفیہ نام میں لیتا
فائل کی آپ پی ایچ پی کی تشریح کرنا چاہتا ہوں.
ہم نامی کسی چیز سے اسے منظور پی ایچ پی کی ترجمان کی میں ایک پائپ.
اگرچہ کے طور پر اس کے جواب واپس حاصل جواب ایک فائل خود تھے.
اور پھر ہم اس فائل کا پر iterate ایک کے بفر میں ان سب کو ھیںچ بائٹس،
ہم بالآخر یہ کر سکتے ہیں، تاکہ انہیں باہر پرنٹ.
>> ان میں سے بے شک، تمام dprintf لئے یہاں بلاتا ہے
ہم سے کچھ پرنٹ کرنے کی اجازت دیتا ہے ایک فائل ویورنک، کہا جاتا ہے جس
صرف ایک عدد صحیح ہے کہ ایک فائل کی نمائندگی کرتا ہے.
، روح میں بہت ہی ہے لیکن ایک فائل سے بنیادی طور پر مختلف
سٹار پوائنٹر.
آپ کی طرح نحو استعمال کر سکتے ہیں کہ کس طرح محسوس printf کے یہاں میں متحرک کر سکتے ہیں، تاکہ
لمبائی کی طرح کچھ داخل ایک HTTP ہیڈر کی قدر کے لئے
مواد کی طوالت سے ملاقات کی.
اور بالآخر میں نے استعمال کیا تقریب اصل میں لکھنے کے لئے حق
درخواست کے جسم.
>> بدقسمتی سے، ہم صرف لاگو متحرک طور پر کے لئے حمایت
پیدا کی پی ایچ پی فائلوں.
ہم کے لئے حمایت کا نفاذ نہیں کیا جامد والی gifs فائلوں کی طرح، اور JPEGs،
اور CSS اور HTML فائلوں.
کہ، بدقسمتی سے، آپ کے لئے چھوڑ دیا جاتا ہے کلائنٹ مقصد کا جواب دینے کے
ایسا کرنے کے لئے.
وہاں میں تو کیا تم نہیں ہے کہ تلاش کر لیں گے نہ کہ بلاک کے اندر اندر زیادہ سے زیادہ پریرتا،
لیکن کس طرح میں اپ کو تھوڑا سا زیادہ ہیں اگر آپ ہم، پی ایچ پی کوڈ کی ترجمانی بارے میں چلا گیا
کام کرتا ہے آپ استعمال کریں گے تھوڑا سا مختلف ہیں.
>> اصل میں، آپ قرضے لے سکتا ہوں فعالیت کے کچھ
شاید عدالتی سے مسئلہ سیٹ، کیونکہ
دن کے آخر میں تم سب کو کرنے کی ضرورت ہے آپ کو پتہ ہے ایک بار یہاں کیا ہے کھلا ہوا جو فائل
آپ کو پتہ ہے ایک بار اور یہ نام نہاد ہے MIME قسم یا مواد کی قسم،
آپ کو ان بائٹس میں پڑھنے کی ضرورت ہے اور کسی نہ کسی طرح باہر انہیں واپس تھوکنے.
>> اس کی اور اب ایک دورے فائل کا دیگر افعال.
پہلی منسلک ہے اپ، جس میں صرف سچ کی واپسی
جب یہ آخر میں ایک سنتا ہے کسی صارف سے کنکشن.
اپ اگلے غلطی ہے.
میں خرابی، اس دوران، کے طور پر ایک تقریب سے ہم مختلف 400 سب کو ہینڈل کرنے میں لکھا تھا
اور 500 HTTP حیثیت آپ چاہتے ہیں کہ کوڈ
صارف کو واپس بھیجنے کے لئے، ایک معیاری پیغام کے ساتھ.
>> اگلا، دوسرا اپ لوڈ کی ہے، ایک خاص طور پر جس کا مقصد زندگی میں گوشت کی تقریب،
ایک فائل ستارہ سے پڑھنے کے لئے جاتا ہے پوائنٹر ایک عالمی بفر میں ایک فائل کے مواد
ہم عالمی سطح پر قرار دیا ہے کہ [مندرجہ بالا؟ اہم. ؟]
اس وجہ سے ہم تھوڑا سا پیچیدہ ہے فائل سے بائٹس پڑھنے کے لئے ہے
لیکن ہر iteration پر چیک کریں ہم نے پہلے کیا ہے یا
فائل کے آخر مارا یا کچھ اور غلط چلا گیا ہے.
اور ہم اس بات کو یقینی بنانا realloc استعمال جو کچھ بھی ہم استعمال کر رہے ہیں بفر بڑھ رہی ہے
اور بڑھتی ہوئی ہے اور ہمیشہ سے بڑھتی ہوئی اور بائٹس کی تعداد میں پہلے سے مقیم
ہم وہاں میں فٹ کرنے کی ضرورت ہے.
ہینڈلر، اس دوران، ہے ہو جاتا ہے کہ تقریب
ہونے کی راہ کی طرف بلایا ایک سگنل پر کنٹرول C رجسٹرڈ
ہم تقطیع کرنا چاہتے ہیں کہ.
ہینڈلر میں یہاں نوٹس یہ کہ آخر
کالز، کو روکنے جو کہ کورس کی ویب سرور بند ہو جاتا ہے.
اور بدقسمتی سے، لک اپ لاگو نہیں ہوتا ہے.
روح میں، یہ ایک ہے کافی سادہ تقریب.
ایک فائل توسیع دی گئی، اس کی ضرورت ہے یہ MIME نام نہاد کی واپسی سے
قسم یا مواد کی قسم.
اور ہم تفصیلات میں وضاحت کہ تعریفیں ہونا ضروری ہے کیا.
لیکن آپ کو ترجمہ کرنے کی ضرورت بالآخر C کوڈ کے لئے اس کا.
>> اگلا، دوسرا اپ ہماری اسی طرح گوشت تقریب ہے زندگی میں جس کا مقصد، تصریف بلایا
نہیں ایک فائل سے، پڑھنے کے لئے ہے، لیکن ایک نیٹ ورک کنکشن سے.
خاص طور پر، پڑھنے اور تصریف ایک براؤزر سے آیا ہے کہ HTTP درخواست
ہیں تاکہ سرور سے بالآخر ہم تجزیہ کر سکتے ہیں
درخواست میں نے صرف ہیڈرز میں لائن اور آپ کے لئے ان لوگوں کو واپس
ایک عالمی بفر کی راہ کی طرف کہ ہم [مندرجہ بالا اعلان کر دیا؟ اہم. ؟]
>> دریں اثنا، ایک ہے، ری سیٹ کر دیں ہم اس کی وضاحت اس تقریب
کہ میں iteratively اندر بلایا جاتا ہے مرکزی ہر بار میں سے آپ کے بارے میں ہیں
سننا، شروع کرنے کے لئے تیار ایک نئے کنکشن کے لئے
ہم ہمیشہ معلوم ہے تاکہ ہمارے متغیر کی ریاست
اور تاکہ ہم بھی ہے کسی بھی میموری آزاد ہے
کے لئے مختص کیا گیا ہے ہو سکتا ہے ایک پچھلے نیٹ ورک کنکشن.
اگلا، دوسرا اپ شروع کر دیں، ہم نے لکھا ہے کہ تقریب
کہ ایک پوری مشتمل نیٹ ورکنگ کے کوڈ کا بہت کچھ
کہ آخر میں ویب سرور شروع ہوتا ہے.
>> آخری اپ فنکشن ہے کہا جاتا سٹاپ، جس میں
بالکل اس کرتا ہے، اسے ویب سرور بند ہو جاتا ہے.
لیکن اس سے پہلے یہ کسی بھی میموری آزاد کہ اب بھی مختص کیا گیا ہے.
لیکن یہ آخر وہاں سے نکلنے بلاتا ہے اس سے بھی کنٹرول کے واپس لوٹنے کے بغیر
ہمارے مرکزی تقریب.
آخر میں، میں سے ایک سب سے زیادہ اہم ٹیکنالوجی
پر عمل درآمد کرتے وقت یہ ویب سرور ہے مقدمے کی سماعت اور غلطی کا تھوڑا سا ہونے جا رہا،
ایک براؤزر ونڈو کھلے رکھنے میں دائیں اور ایک ٹرمینل ونڈو میں
بائیں، سرورز کنسول کھڑکی، تاکہ آپ کو
ایسے پیغامات کو دیکھ سکتے ہیں سکرین پر دکھایا جا رہا ہے.
>> لیکن بہتر ابھی تک ایک تہائی ہو گی کھڑکی، ایک دوسرے ٹرمنل ونڈو،
جس میں آپ نے ٹیل نیت، استعمال استعمال کرتے ہیں جس کے لئے رپورٹ میں تجویز کیا جاتا ہے.
اور ٹیل نیت صرف ایک بہت ہے سادہ نیٹ ورک پروگرام
یہ کہ آپ کا ڈرامہ کرنے کی اجازت دیتا ہے ایک ونڈو میں ایک براؤزر ہونا
دوسرے ونڈو سے گفتگو کرتے ہوئے.
جیسا کہ آپ دیکھ سکتے ہیں اس طرح بالکل وہی ٹیکسٹ حکم
اس پر واپس آ رہے ہیں سرور سے کلائنٹ کو
poking ہے کرنے کے لئے بغیر کروم کے ڈویلپر کے ارد گرد
ایک دوسری صورت میں، فورم کے اوزار clunkier انٹرفیس.