Spiker: İndi edək dive distribution kodu daxil və kontekstində nəzər olan code yazmaq əməliyyat olacaq. Günün sonunda, Siz həyata olacaq web server bütövlükdə. Amma biz təmin etdik skeleti ilə bir funksionallıq var indeksi, xüsusilə şəbəkə ilə bağlı. Bir nəzər salaq. Burada üst doğru qədər Belə ki, fayl bir dəstə xüsusiyyət makro tələblərinə test. İndi bu c, vasitəsi yalnız bir xüsusiyyət man pages bir dəstə görə Siz bəzi müəyyən etmək Bu sabitləri doğru olmaq və ya belə xüsusi nömrələr olmaq Siz müəyyən funksiyaları girmə imkanı vardır. Əks halda onlar bəyan olacaq və sizə yoxdur. Mən yolu ilə bu etdik kişi pages oxumaq. İndi aşağı,-da 17 vasitəsilə xətləri 15, biz elan məhdudiyyətlər bütün dəstə var. Və biz bir bu borc etdik Apache adlı məşhur web server. Bu yalnız var gedir nömrələri ümumi sayı cap bayt ki, icazə verilir HTTP sorğu üçün müxtəlif kontekstlərdə ki, bir browser mənə göndərmək üçün icazə verilir. Sonra, biz octets müəyyən edir. İndi octet bir xülya yoludur bir byte, və ya səkkiz bit deyərək. Yesteryear bir byte çıxır mütləq səkkiz bit idi, belə ki, octet həmişə səkkiz bit edir. Belə ki, bu halda biz qəbul etdik nə şəbəkə ümumi var Səkkiz bytes bir octet zəng dünya. Burada octets olacaq ki, müəyyən etdik belə ki, çox Suclari kimi, 512 olmaq Biz bir dəstə oxumaq zaman bir zamanda bayt, burada da, biz oxumaq olacaq bir zamanda octets dəstə. Header faylları bütün dəstə Next. Necə ki, bu daxil etmək bilirdinizmi? Yaxşı mən sadəcə insan oxumaq funksiyaları bir sıra pages bu paylanması istifadə lazımdır ki, kodu və olanları daxil Mən tapşırılıb. İndi biz bir veri növü var. Biz char olmaq octet elan etdik. Və biz ki, sonra görəcəksiniz kodu ərzində istifadə olunur. Və biz elan etdik ki, prototipləri bütün dəstə, və biz tez gəzmək lazımdır bu funksiyaları hər. Nəhayət, və bəlkə də ən saxlamaq vacibdir Bu baxımdan ağla hekayə edir ki, əslində, bütün var qlobal dəyişənlər dəstə fayl üst, kök, CFD, SİF, sorğu, fayl və bədən. İndi ümumiyyətlə, belə ki, bir çox qlobal istifadə dəyişənlər, və ya bütün qlobal dəyişənlər, geri təcrübə deyil. Amma biz də istifadə etdiyiniz çıxır texnika adlı siqnal user sonra bizə imkan verir ki, kodu ilə istifadəçi bir xit zaman aşkar CTRL C və bağlamaq kimi qəşəng server. Və qaydada qəşəng bunu və həqiqətən pulsuz yaddaş qədər biz daxil olmaq lazımdır Bu qlobal dəyişənlər. İndi əsas nəzər almaq imkan olan Bu proqram tam çeker. Birincisi, burada üst biz bir səhv nömrəsi dəyişən var ki, görünür bir növü var, lakin var bu, həqiqətən, çünki adlı fayl müəyyən səhv errno.h olan ali daxil edilir. Siz həqiqətən errno insan Əgər bu şey üçün müəyyən görmək, bu bir olduğunu görəcəksiniz xüsusi qlobal dəyişən ki, bütün dəstə tərəfindən müəyyən edilir funksiyaları yazılı deyil bizim deyil, Linux müəlliflərin və digər sistemlər faktiki olaraq təyin etmək dəyişən bir şey bir sıra yanlış gedir qlobal bilər ki, yanlış getmək nə anlamaq. İndi aşağı yeni bir görəcəksiniz texnika, bəlkə, getopt istifadə analiz komanda kömək edir ki, funksiyası line dəlilləri biz deyil, belə ki, figuring vaxt israf narahat out 8080 kimi bir şey analiz üçün necə, və ya tire p, və ya tire h yardım almaq üçün. getopt mahiyyətcə bizim üçün ki, yoxdur. Daha man baxın. Sonra, biz səhv bir az etmək əmin olmaq üçün yoxlanılması port nömrəsini ərzində ki, spec müəyyən üçündür. Sonra, biz funksiyası zəng görmək Onun müəyyən, biz lazımdır başlamaq bir anda baxmaq və onun adı kimi Bu web server başlayır göstərir. Burada bir funksiyası zəng var deyir adlı siqnal, Əgər siz Control C eşidəndə istifadəçi klaviatura, irəli getmək və zəng olacaq bir funksiyası adlı handler nəticədə təmiz şeyi və dayandırmaq server. Ki, aşağıdakı görünür nə sonsuz loop, ilk line olan səmərəli zəng adlı funksiyası özümüzü Biz də ki, yenidən məqsədilə sonra həyata Qlobal dövlətlərin bəzi pulsuz. Bundan sonra bir xətt kodu şərti geri yoxlanılması bağlı dəyəri. Bir xəbər kimi İndi bağlı görünür, doğru və ya yalan qaytarır bir şey. Və bu, lakin var bağlı xüsusi bir şey ki, bir blok zəng. Orada oturub gözləmək olacaq bir istifadəçi browser qədər Bu web qoşulmaq üçün çalışır server və yalnız bundan sonra o, Biz davam ki, doğru və ya yalan qayıtmaq bu halda bəyanat daxilində. Bir var, bir bu funksiyanı qeyd Biz yazdı analiz adlı funksiyası, olan bütün, octets bütün çözümler Bir brauzer gələn bytes server, ki, biz əl bilər bir geri nəticədə dəyəri bu qlobal dəyişənlər ki, mağazalar yalnız bayt bütün ki, mövzular sorğu deyil, bədən bu həqiqətən bir orqan var idi. İndi başlayacaq aşağı çıxarış həmin başlıqlarını analiz məlumat alt Biz qayğı ki. Xüsusilə, başına dəqiqləşdirilməsi, biz ilk olan xətt tələb istədi yalnız ilk line ki, inşallah get kimi bir şey deyir zərbə və ya bir yol və sonra HTTP 1.1. Biz bu məcaz istifadə etdiyiniz bir ot tayası bir iynə Xüsusilə axtarmaq üçün chars və ya URL. And olsun ki, bir sıra var Bizim bölüşdürülməsi kodu funksiyaları siz ki, bu da faydalı ola bilər xüsusi dəyərlər axtarır zaman. Nəticədə, biz bu bytes surəti adlı dəyişən line, olan çox, biz, qeyd yığını ayrılmış dinamik ölçülü array yolu ilə. Və biz qəsdən çalışdığınız malloc zəng qarşısını almaq üçün çünki yenə, çünki Control C olan Bu proqram potensial xüsusiyyət, biz birdən-birə bu kod istəmirəm İstifadəçi vuruş tərəfindən müdaxilə Control C, nəticəsi Mən bir şans ola bilər ki, pulsuz bir şey üçün mən malloced etdik. Belə ki, mən çox istifadə çalışıram yığını mən burada edə bilərsiniz edir. Next dos üçün bütün dəstə qədər. dəqiqləşdirilməsi izah edəcək Burada gözlənilir dəqiq nə, lakin şərh vermək nə bir işarə gözləyir. Siz əvvəlcə sorğu xətti təsdiq və bu kimi görünür əmin olun spesifikasiyalar, belə ki, danışmaq, qrammatika bu olmalıdır deyir. Daha sonra bir şey çıxarış lazımdır out məhsulları, sorğu adlı sual işarəsi sonra kimi Biz Google nümunə gördüm HD parametr keçən. Biz sonra birlikdə concatenate web server kök var yolu ilə ki, sorğu ilk line və tam yolunu yaratmaq Fayl biz baxmaq istəyirəm. Bundan sonra, biz əmin etmək olacaq fayl var və oxunaqlı edir. Və sonra biz çıxarış olacaq onun fayl uzantısı, html və ya php, və ya bəzi belə məsləhət tələb simli çox sonunda. Növbəti bir bütündür kodu dəstə biz yazdı həqiqətən PHP yaratmaq üçün Sizin üçün məzmun. Bir sözlə, bu kod adı edir fayl siz PHP şərh etmək istəyirəm. Biz deyilən bir şey ilə keçmək PHP-nin tərcüməçi bir boru. Sanki cavab geri alın cavab bir fayl özü idi. Və sonra biz fayl üzərində təkrarlamaq bir bufer onları bütün çəkərək bytes, biz nəticədə edə bilərsiniz, belə ki, onları çap. Bu Həqiqətən, bütün dprintf burada çağırır Bizə bir şey çap imkan verir bir fayl descriptor, adlanan yalnız bir tam deyil ki, bir fayl təmsil edir. , Ruhunda çox oxşar, lakin bir fayl əsaslı müxtəlif star pointer. Kimi sintaksis istifadə edə bilərsiniz necə edək printf burada dinamik bilər ki, uzunluğu kimi bir şey daxil HTTP mövzu dəyər Content-Length çağırıb. Və nəticədə Mən istifadə funksiyası həqiqətən yazmaq hüququ tələbi bədən. Təəssüf ki, biz yalnız həyata dinamik dəstək yaradılan PHP faylları. Biz dəstək həyata etməyib statik gifs kimi faylları və jpegs və CSS və HTML faylları. Təəssüf ki, sizə qalıb Müştəri məqsədi cavab Bunu etmək üçün. Orada Beləliklə, siz var ki, tapa bilərsiniz ki, blok daxilində çox ilham, lakin necə bir az daha əgər biz PHP kodu tərcümə haqqında getdi funksiyaları istifadə edəcəyik bir az fərqlidir. Əslində, siz borc bilər funksionallığı bəzi bəlkə Suclari dən problem set, çünki Günün sonunda bütün lazımdır Siz bir dəfə burada açıq nə faylı Siz bir dəfə və belə deyirlər MIME növü və ya məzmun növü, bu bayt oxumaq lazımdır və elə onları geri tüpürmək. Bu İndi bir tur fayl digər funksiyaları. Ilk bağlıdır Up, olan sadəcə doğru qaytarır zaman nəhayət eşidir Bir istifadəçi əlaqə. Növbəti səhv edir. Error, eyni zamanda, bir funksiyası biz Müxtəlif 400 bütün idarə etmək üçün yazdı 500 HTTP durum Istədiyiniz bilər kodları istifadəçi geri göndərmək üçün, standart mesaj ilə birlikdə. Sonrakı qədər yük, xüsusilə kimin məqsədi həyat ətli funksiyası, bir fayl ulduz oxumaq edir göstərici qlobal bufer bir fayl məzmunu Biz qlobal elan etdi [yuxarıda? Əsas. ?] Bu Çünki biz bir az mürəkkəb faylı bayt oxumaq lazımdır lakin hər iteration kontrol biz artıq var olub fayl sonu basın və ya başqa bir şey yanlış keçmişdir. Və biz əmin etmək realloc istifadə nə biz istifadə etdiyiniz bufer artır və artan və həmişə artan və bytes sayı qabaqda olma biz uyğun lazımdır. Handler, eyni zamanda, edir olur funksiyası olan yolu ilə çağırılan bir siqnal kimi Control C qeydiyyatdan biz almaq istəyirəm. Işleyicisindeki burada edək bu nəticədə zənglər, stop əlbəttə web server vermir. Və təəssüf ki, axtarış həyata deyil. Ruhu, bu deyil kifayət qədər sadə fəaliyyət göstərir. Bir fayl uzantısı nəzərə alaraq, ehtiyacı Bu MIME belə deyirlər qayıtmaq növü və ya məzmun növü. Və biz dəqiqləşdirilməsi daxil ki mapping olmalıdır. Amma tərcümə etmək lazımdır nəticədə c kodu it. Next qədər eyni ətli funksiyası həyat kimin məqsədi, analiz adlanır bir fayl oxumaq üçün, lakin bir şəbəkə. Xüsusilə, oxu və təhlil Bir brauzer gəlib HTTP request ki, server nəticədə biz analiz edə bilər tələbi yalnız başlıqlarını line və bu geri qlobal bufer yolu ilə ki, biz [yuxarıda bəyan? Əsas. ?] Eyni zamanda, bir deyil, Reset Biz müəyyən funksiyası ki, iteratively daxilində adlı olur Əsas hər zaman siz etdiyiniz dinləmək başlamaq üçün hazır Yeni qoşulması üçün biz həmişə bilirik ki, Bizim dəyişənlərin dövlət və ki, biz də var hər hansı bir yaddaş azad ki, ayrılıb ola bilər Bir əvvəlki şəbəkə. Sonrakı qədər edir başlamaq, Biz yazdı funksiyası ki, bir bütün var şəbəkə kodu çox ki, nəticədə web server başlayır. Son up funksiyası adlı stop olan dəqiq ki, yoxdur, onu web server vermir. Amma ilk hər hansı bir yaddaş kurtarır hələ də ayrılıb. Amma nəticədə çıxış çağırır hətta nəzarət qaytarılması olmadan bizim əsas funksiyası. Nəticədə, biri Ən əhəmiyyətli texnika həyata keçirərkən bu web server sınaq və səhv bir az olacaq, bir brauzer pəncərəsində açıq olan sağ və terminal pəncərə at sol, server console pəncərə, ki, olan messages görə bilərsiniz Ekranda nümayiş olunur. Amma daha yaxşı hələ üçüncü olacaq pəncərə, ikinci terminal pəncərə, Siz Telnet, istifadə istifadə olan spec müəyyən edilir. Və Telnet bir çox var sadə şəbəkə proqram ki, iddia üçün imkan verir bir pəncərə bir browser olmaq digər pəncərə danışarkən. Görmək üçün bu yol tam mətn əmrləri geri gəlir server müştəriyə poking olmadan xrom geliştirici ətrafında bir başqa alətləri clunkier interface.