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.