SPEAKER: حالا شیرجه به کد توزیع و نگاهی به زمینه که در آن کد شما ارسال رفتن به عامل. در پایان روز، شما در حال رفتن برای پیاده سازی تمامیت وب سرور است. اما ما فراهم کرده اند شما با اسکلت کد که برخی از قابلیت های، به خصوص به شبکه مرتبط است. بیایید نگاهی. بنابراین تا اینجا به سمت بالا فایل یک دسته است از قابلیت تست مورد نیاز کلان. در حال حاضر این فقط یکی از ویژگی های C، موجب آن است با توجه به یک دسته از صفحات man شما باید به تعریف برخی از این ثابت می شود درست و یا حتی شماره های خاص به طوری که شما دسترسی به توابع خاص داشته باشد. در غیر این صورت آنها می شود اعلام نشده و به شما امکان دسترسی ندارد. بنابراین من این راه انجام داده ام خواندن صفحات man. در حال حاضر به پایین، در خطوط 15 تا 17، ما یک دسته کامل از محدودیت اعلام کرد. و ما این را از یک قرض گرفته ام وب سرور محبوب به نام آپاچی. و این تنها اعداد است که در حال رفتن برای جلوگیری از تعداد کل از بایت است که اجازه می در زمینه های مختلف برای درخواست HTTP که یک مرورگر مجاز است به من ارسال کنید. بعد، هشتایی تعریف می کنیم. در حال حاضر هشت بیتی فقط یک راه فانتزی است از گفتن یک بایت، یا هشت بیت است. معلوم است در گذشته یک بایت نه لزوما هشت بیت بود، تا هشت بیتی است که همیشه هشت بیت است. بنابراین در این مورد ما به تصویب رسید ام چه چیزی مشترک در شبکه جهان خواستار هشت بایت هشت بیتی. در اینجا من مشخص کرده ام که هشتایی خواهد شد شود 512، به طوری که بسیار شبیه به در پزشکی قانونی هنگامی که ما به عنوان خوانده شده یک دسته از بایت در یک زمان، در اینجا بیش از حد، ما قصد داریم به عنوان خوانده شده دسته از هشتایی در یک زمان. بعد یک دسته کامل از فایل های هدر. چگونه من می دانم که به این شامل؟ خب من به سادگی به عنوان خوانده شده مرد صفحات برای تعدادی از توابع که ما را در این توزیع استفاده کد و شامل در آنهایی که من به دستور شد. و در حال حاضر ما یک نوع داده. ما هشتایی اعلام کرده ایم به یک کاراکتر. و ما بعد خواهید دید که که در سراسر کد استفاده می شود. و ما اعلام کرده ایم کل دسته از نمونه های اولیه، و ما به سرعت از طریق راه رفتن هر یک از این توابع. در نهایت، و شاید بیشتر مهم است که در نگه داشتن ذهن در این نقطه در داستان، این است که وجود دارد هستند، در واقع یک کل دسته از متغیرها در بالای فایل، ریشه، CFD، SFD، درخواست، فایل و بدن. در حال حاضر به طور کلی، با استفاده از بسیاری از جهانی متغیرها، و یا متغیرها در همه، است عمل به عقب نیست. اما معلوم است ما نیز با استفاده از یک روش به نام دست زدن به سیگنال بعد در کد، که ما اجازه می دهد تا به تشخیص زمانی که کاربر چیزی بازدید مانند CTRL C و تعطیل سرور آرامی. و به منظور انجام این کار برازنده و در واقع آزاد کردن حافظه، ما نیاز به دسترسی به به این متغیر جهانی است. و در حال حاضر اجازه دهید نگاهی به اصلی، که درایوهای تمامیت این برنامه است. اول، در بالای در اینجا ما یک متغیر تعداد خطا که نه به نظر می رسد یک نوع، اما این به دلیل آن در واقع تعریف شده در یک فایل با نام errno.h خطا که شامل بالاتر است. اگر شما انسان errno به واقع تعریف برای این چیزی که مشاهده می کنید، شما خواهید دید که این یک متغیر خاص جهانی که توسط یک دسته کامل مجموعه از توابع نوشته نشده است توسط ما، اما توسط نویسندگان لینوکس و سایر سیستم های به واقع مجموعه تعداد که متغیر زمانی که چیزی اشتباه می رود به طوری که شما در سطح جهانی می تواند کشف کردن آنچه انجام به اشتباه است. در حال حاضر به پایین شما یک جدید روش شاید با استفاده از getopt، یک تابع است که کمک می کند تا دستور پارسه استدلال خط به طوری که ما نمی به زحمت اتلاف وقت بدانند چگونه به تجزیه چیزی شبیه به 8080، و یا خط تیره P، یا خط تیره ساعت برای دریافت کمک. getopt اساسا می کند که برای ما. برای بیش صفحه مرد را ببینید. بعد، ما یک بیت از خطا چک کردن مطمئن شوید که شماره پورت است که در داخل محدوده مشخص شده در مشخصات. بعد، ما یک تماس را مشاهده کنید به تابع شروع، که تعریف ما در نگاه در یک لحظه، و به عنوان نام آن نشان می دهد، این شروع می شود وب سرور است. در اینجا ما یک فراخوانی تابع سیگنال به نام که می گوید، اگر و زمانی که شما کنترل C از شنیدن صفحه کلید کاربر، جلو بروید و تماس بگیرید یک تابع به نام کنترل که رفتن همه چیز را به نهایت تمیز کردن و متوقف کردن سرور. در زیر این چیزی است که به نظر می رسد حلقه بی نهایت، خط اول که به طور موثر یک تماس است به یک تابع به نام تنظیم مجدد، که خودمان پیاده سازی بعدا در جهت به آزاد کردن برخی از کشورهای جهانی ما. پس از آن یک خط از است کد که مشروط است بررسی بازگشت ارزش متصل. به نظر می رسد در حال حاضر متصل مانند یک گزاره، چیزی است که درست یا نادرست است. و آن را ندارد، اما وجود دارد چیز خاصی در متصل که در آن یک تماس مسدود است. این نشستن وجود دارد و منتظر تا مرورگر کاربر تلاش برای اتصال به این وب سرور و تنها پس از آن را بازگشت درست یا غلط به طوری که ما ادامه به داخل این اگر بیانیه. هنگامی که وجود دارد، متوجه این تابع به تابع به نام تجزیه، که ما نوشت، که تجزیه تمام هشتایی، تمام از بایت که از یک مرورگر به سرور، به طوری که ما می توانیم دست شما در نهایت یک مقدار به یک از آن متغیرهای جهانی است که فروشگاه همه از بایت فقط در عناوین که درخواست، نه بدن اگر به آن بود در واقع یک بدن وجود دارد. در حال حاضر به پایین ما برای شروع تجزیه آن هدر برای استخراج یک زیر مجموعه از اطلاعات که ما در مورد مراقبت. به طور خاص، در هر مشخصات، ما اول می خواستم به درخواست خط است، که درست است که خط اول که امیدوارم چیزی شبیه به GET می گوید بریده بریده و یا برخی از مسیر و سپس HTTP 1.1. ما در حال استفاده از این استعاره از یک سوزن در انبار کاه برای خاص نگاه کاراکتر یا آدرس. و در واقع، یک تعداد از وجود دارد توابع در کد توزیع ما که شما، بیش از حد، ممکن است پیدا کردن مفید هنگامی که به دنبال ارزش خاص است. در نهایت، ما کپی این کلمه در ادامه متن به یک خط متغیر نامیده می شود، که متوجه، بیش از حد، ما در پشته تخصیص داده از طریق یک آرایه به صورت پویا به اندازه. و ما عمدا تلاش برای جلوگیری از تماس malloc چون دوباره، چرا کنترل C بودن یکی از ویژگی های بالقوه این برنامه، ما نمی خواهم به این کد به طور ناگهانی قطع توسط ضربه کاربر کنترل C، در نتیجه از آن این است که من ممکن است شانس ندارد چیزی رایگان من malloced ام. بنابراین من در تلاش برای استفاده به اندازه از پشته است که من در اینجا می توانید. تا بعد، یک دسته کامل از به داس. مشخصات تفصیل شرح دادن خواهد در دقیقا چه چیزی در اینجا انتظار می رود، اما نظرات شما را یک اشاره از آنچه در پیش روست. شما اول نیاز به اعتبار خط درخواست و مطمئن شوید که آن را مانند به نظر می رسد مشخصات دستور زبان، پس به صحبت می کنند، می گوید که باید. سپس شما نیاز به استخراج چیزی به نام پرس و جو، چیزهای خارج بعد از یک علامت سوال، مانند ما با مثال گوگل ما را دیدم در عبور در پارامتر HD. پس از آن ما با هم الحاق ریشه وب سرور با راه است که در که اولین درخواست خط و شکل مسیر کامل از فایل ما می خواهیم به دنبال. پس از آن، ما قصد داریم تا مطمئن شوید که فایل وجود دارد و قابل خواندن است. و سپس ما در حال رفتن به استخراج آن پسوند فایل، اچ یا .php، و یا برخی مانند پسوند که در بسیار انتهای رشته درخواست شده است. بعد تا یک کل است دسته از کد ما نوشت در واقع تولید پی اچ پی تولید محتوا برای شما. به طور خلاصه، این کد طول می کشد به نام فایل شما می خواهید PHP تفسیر. ما آن را تصویب شده توسط چیزی به نام یک لوله به مترجم PHP است. به عقب بر گردیم پاسخ به چند پاسخ یک فایل خود بودند. و پس از آن ما بیش از آن فایل را تکرار کلمه در ادامه متن، کشیدن همه آنها را به یک بافر به طوری که ما در نهایت می تواند آنها را چاپ کنید. در واقع، همه این خواستار اینجا به dprintf ما اجازه می دهد به چاپ چیزی به نام یک توصیفگر فایل، که فقط یک عدد صحیح است است که نشان دهنده یک فایل. در روح و روان بسیار مشابه، اما اساسا متفاوت از یک فایل اشاره گر ستاره. توجه کنید که چگونه شما می توانید نحو مانند استفاده printf را در اینجا به طوری که من به صورت پویا می تواند درج چیزی شبیه به طول برای ارزش یک هدر HTTP به نام محتوا طول. و در نهایت من با استفاده از حق در واقع نوشتن تابع بدن به درخواست. متاسفانه، ما فقط اجرا پشتیبانی از صورت پویا فایل های تولید شده پی اچ پی. ما برای حمایت از پیاده سازی نیست فایل های شخص مانند GIF های، و عکس JPEG، و CSS و HTML فایل های. که، متاسفانه، به شما چپ برای پاسخ به هدف مشتری این را انجام دهد. بنابراین در آن وجود دارد شما پیدا وجود دارد که نمی الهام بخش بسیار است که در آن بلوک، اما اگر شما کمی بالاتر در چگونه ما در مورد تفسیر کد PHP رفت، توابع شما استفاده هستند کمی متفاوت است. در واقع، شما می توانید قرض برخی از قابلیت های شاید از پزشکی قانونی مجموعه ای مشکل، به دلیل در پایان روز همه شما نیاز در اینجا است که یک بار شما می دانید چه فایل باز و هنگامی که شما می دانید آن را به اصطلاح نوع MIME پرونده و یا نوع محتوا، شما نیاز به خواندن در آن کلمه در ادامه متن و به نوعی آنها را به عقب تف. و در حال حاضر یک تور از این توابع دیگر فایل است. اولین متصل است، که به سادگی درست میشود وقتی که در نهایت می شنود اتصال از یک کاربر. تا بعد خطا است. خطا، در عین حال، به عنوان یک ما تابع نوشت که مسئولیت رسیدگی به تمام 400 های مختلف و وضعیت 500 HTTP کد است که شما ممکن است بخواهید برای ارسال به کاربر، همراه با یک پیام استاندارد. بعد تا بار است، به ویژه تابع گوشتی، که هدف در زندگی به از یک ستاره فایل به عنوان خوانده شده اشاره گر محتویات یک فایل را در یک بافر جهانی که ما در سطح جهانی اعلام کرد بالا [؟ اصلی. ؟] این مجموعه کمی چون ما است به عنوان خوانده شده بایت از فایل اما بررسی در هر تکرار آیا ما در حال حاضر ضربه انتهای فایل یا چیز دیگری اشتباه رفته است. و ما استفاده بازتخصیص مطمئن شوید که هر بافر ما با استفاده از در حال رشد است و رو به رشد و در حال رشد و همیشه اقامت جلوتر از تعداد بایت که ما باید به تناسب در آن وجود دارد. هندلر، در عین حال، تابع که می شود نام از طریق داشتن کنترل C به عنوان یک سیگنال ثبت نام که ما می خواهیم برای رهگیری. توجه کنید در اینجا در کنترل که آن در نهایت تماس متوقف، که البته متوقف وب سرور است. و متاسفانه، مراجعه اجرا نشده است. در روح، این است که عملکرد نسبتا ساده است. با توجه به فرمت فایل، به آن نیاز دارد برای بازگشت به آن را به اصطلاح MIME نوع و یا نوع محتوا. و ما در مشخصات مشخص آنچه که نقشه برداری داشته باشد. اما شما نیاز به ترجمه آن در نهایت به کد C. تا بعد عملکرد مشابه گوشتی ما به نام پارسه، که هدف در زندگی است به عنوان خوانده شده، نه از یک فایل، اما از یک اتصال شبکه می باشد. به طور خاص، خواندن و تجزیه درخواست HTTP که از یک مرورگر آمده به سرور به طوری که در نهایت ما می توانیم تجزیه فقط در هدر در درخواست خط و بازگشت آن به شما از طریق بافر جهانی است که ما در بالا [اعلام؟ اصلی. ؟] تنظیم مجدد، در همین حال، یک تابعی که تعریف می کنیم که می شود مکررا در داخل به نام از اصلی هر بار هستی آماده به شروع به گوش دادن برای اتصال جدید به طوری که ما همیشه می دانم دولت از متغیرهای ما و به طوری که ما نیز باید آزاد هر حافظه که ممکن است برای اختصاص داده شده است اتصال به شبکه های قبلی است. بعد شروع، تابع که ما نوشت که شامل یک کل بسیاری از کد شبکه که در نهایت وب سرور شروع می شود. تاریخ و زمان آخرین تا تابع است به نام توقف، که دقیقا آن، آن را متوقف وب سرور است. اما اولین بار آن را آزاد می گذارد تا هر حافظه که هنوز هم اختصاص یافته است. اما در نهایت خواستار خروج حتی بدون بازگشت کنترل به تابع اصلی ما است. در نهایت، یکی از ترین تکنیک های مهم زمانی که اجرای این وب سرور است برای رفتن به یک بیت از آزمون و خطا، داشتن یک مرورگر پنجره باز در سمت راست و یک پنجره ترمینال در سمت چپ، کنسول سرور پنجره، به طوری که شما می توانید پیام های که ببینید در حال بر روی صفحه نمایش داده می شود. اما هنوز بهتر خواهد بود یک سوم پنجره، پنجره ترمینال دوم، که در آن شما با استفاده از شبکه راه دور، استفاده است که برای آن در تنظیمات تجویز می شوند. و شبکه راه دور است فقط بسیار برنامه شبکه ساده که اجازه می دهد شما را به تظاهر به یک مرورگر در یک پنجره در حالی که صحبت کردن به پنجره دیگر. در این روش شما می توانید ببینید دقیقا دستورات متنی که بر می گردی از سرور به کلاینت بدون نیاز به مجبور در اطراف توسعه کروم را ابزار در غیر این صورت رابط clunkier.