SPIKA: Sasa hebu kupiga mbizi ndani ya usambazaji code
na kuangalia mazingira ambayo kificho kuandika
ni kwenda kuwa kazi.
Mwisho wa siku, wewe ni kwenda kutekeleza
ukamilifu wa mtandao wa kompyuta.
Lakini tuna zinazotolewa wewe na mifupa
kificho kwamba kuwa na baadhi ya utendaji, hasa kuhusiana na mitandao.
Hebu tuangalie.
>> Hivyo hapa juu kuelekea juu ya faili ni rundo
ya kipengele mtihani mahitaji ya jumla.
Sasa hii ni tu hulka ya c, ambapo kulingana na rundo la kurasa mtu
una kufafanua baadhi ya constants haya kuwa kweli
au kuwa hata idadi maalum ili unaweza kupata baadhi ya kazi.
Vinginevyo wao utakuwa Undeclared na huwezi kupata.
Hivyo mimi tumefanya hili kwa njia ya kusoma kurasa mtu.
Sasa chini chini, katika mistari 15 kupitia 17, sisi
kuwa na rundo zima la mipaka alitangaza.
>> Na tumekuwa alikopa hizo kutoka maarufu mtandao wa kompyuta iitwayo Apache.
Na hawa ni baadhi tu ya namba kwamba ni kwenda
cap jumla ya idadi ya ka kwamba wanaruhusiwa
katika mazingira mbalimbali kwa ajili ya ombi HTTP kwamba browser anaruhusiwa kutuma mimi.
Next, sisi kufafanua octets.
Sasa unane ni njia tu ya dhana ya kusema Byte, au bits nane.
Zinageuka katika yesteryear Byte siyo lazima nane bits,
hivyo unane daima bits nane.
Hivyo katika kesi hii tumekuwa iliyopitishwa nini ya kawaida katika mitandao
dunia ya wito nane ka unane.
>> Hapa nimepata maalum kwamba octets mapenzi kuwa 512, ili kiasi kama katika forensics
tunaposoma rundo la ka wakati huo, hapa pia,
tunakwenda kusoma rundo la octets wakati huo.
Next rundo zima la header files.
Jinsi gani mimi kujua ni pamoja na haya?
Naam, mimi kusoma tu mtu kurasa kwa ajili ya idadi ya kazi
kwamba tutaweza kutumia katika usambazaji huu kanuni na ni pamoja na katika wale
Mimi nilikuwa maelekezo ya.
>> Na sasa tuna aina data.
Tumekuwa alitangaza unane kuwa Char.
Na tutaweza kuona baadaye kwamba hiyo ni kutumika katika code.
Na tumekuwa alitangaza rundo zima la prototypes,
na tutaweza kutembea haraka kwa njia ya kila moja ya kazi hizo.
Mwisho, na labda zaidi muhimu kuweka
akili katika hatua hii ya hadithi, ni kwamba kuna
ni, kwa kweli nzima rundo la vigezo kimataifa
saa ya juu ya faili, mizizi, CFD, SFD, ombi, faili na mwili.
>> Sasa kwa ujumla, kwa kutumia mengi ya kimataifa vigezo, au vigezo kimataifa wakati wote,
si mazoezi nyuma.
Lakini zinageuka tuko pia kutumia mbinu ya kuitwa ishara utunzaji baadaye
katika kanuni, ambayo inaruhusu sisi kuchunguza wakati user hits kitu
kama CTRL C na kufunga chini server gracefully.
Na ili kufanya hivyo gracefully na kwa kweli bure juu ya kumbukumbu,
tunahitaji kuwa na upatikanaji wa vigezo hivi kimataifa.
>> Na sasa hebu tuangalie kuu, ambayo anatoa ukamilifu wa mpango huu.
Kwanza, saa ya juu hapa sisi kuwa kosa simu variable
kwamba inaonekana si kwa kuwa na aina, lakini hiyo ni
kwa sababu ni kweli inavyoelezwa katika faili inayoitwa
kosa errno.h ambayo ni pamoja na ngazi ya juu.
Kama wewe kufanya mtu errno kwa kweli angalia ufafanuzi kwa jambo hili,
utaona kwamba hii ni maalum variable kimataifa ambayo
ni kuweka na rundo zima ya kazi si imeandikwa
na sisi, lakini na waandishi wa Linux na mifumo mingine kwa kweli kuweka
idadi ya kwamba variable wakati kitu huenda vibaya ili uweze kimataifa
kufikiri nini alifanya kwenda vibaya.
>> Sasa chini chini utaona mpya mbinu labda kwa kutumia getopt,
kazi ambayo husaidia amri parse hoja mstari ili hatufanyi
kuwa na bother kupoteza muda kuhesabia jinsi ya kuchanganua kitu kama 8080,
au dash p, au dash h kupata msaada.
kimsingi getopt gani kwamba kwa ajili yetu.
Angalia ukurasa mtu kwa zaidi.
>> Next, sisi kufanya kidogo ya makosa kuangalia ili kuhakikisha
kwamba idadi bandari ni ndani ya maalum mbalimbali katika spec.
Next, tunaona mwito wa kazi kuanza, ambaye ufafanuzi tutaweza
kuangalia katika wakati huu, na kama jina lake unaonyesha, hii kuanza server mtandao.
Hapa tuna wito wa kazi kuitwa ishara ambayo anasema,
kama na wakati wewe kusikia Kudhibiti C kutoka mtumiaji keyboard, kwenda mbele na wito
kazi kuitwa handler kwamba kinaendelea mambo na hatimaye safi up na kuacha
server.
>> Chini kwamba ni nini inaonekana kuwa usio kitanzi, line ya kwanza ambayo
ufanisi ni wito kwa kazi kuitwa
upya, ambayo sisi wenyewe kutekeleza baadaye ili
bure juu ya baadhi ya nchi yetu kimataifa.
Baada ya kuwa ni mstari wa kificho kwamba masharti
ni kuangalia kurudi thamani ya kushikamana.
Sasa kushikamana inaonekana kama predicate, kitu kwamba anarudi kweli au uongo.
Na hivyo, lakini kuna kitu maalum katika kushikamana
katika kwamba ni kuzuia simu.
Itakuwa kukaa huko na kusubiri mpaka browser mtumiaji
anajaribu kuunganisha kwa mtandao huu server na kisha tu mapenzi yake
kurudi kweli au uongo ili tuweze kuendelea ya ndani ya hii kama taarifa.
>> Mara baada ya hapo, taarifa ya kazi hii kwa kazi kuitwa parse, ambayo sisi aliandika,
ambayo parses wote wa octets, kila ya ka kuja kutoka browser
kwa server, ili tuweze mkono wewe nyuma hatimaye thamani kwa moja
ya vigezo wale kimataifa ambayo maduka yote ya ka katika tu
headers ya kwamba ombi, si mwili
kama kulikuwa na kweli mwili yake.
>> Sasa chini chini tunaanza Hazrat headers wale dondoo
subset ya habari kwamba sisi huduma ya juu.
Hasa, kwa vipimo, sisi kwanza
alitaka kuomba line, ambayo ni tu kwamba line ya kwanza kabisa kwamba
hopefully anasema kitu kama kupata kufyeka au baadhi ya njia na kisha HTTP 1.1.
Sisi ni kutumia mfano huu la sindano katika haystack
kuangalia kwa fulani chars au anwani.
Na hakika, kuna idadi ya kazi katika usambazaji code yetu
kwamba wewe, pia, wanaweza kupata manufaa wakati wa kutafuta maadili fulani.
>> Hatimaye, sisi nakala ka hizi katika variable kuitwa line,
ambayo taarifa, pia, tumekuwa zilizotengwa juu ya stack
kwa njia ya safu dynamically ukubwa.
Na sisi ni makusudi kujaribu kuepuka wito malloc
kwa sababu tena, kwa sababu ya Udhibiti C kuwa
uwezo hulka ya mpango huu, sisi hawataki kuwa kanuni hii ghafla
kuingiliwa na user kupiga Kudhibiti C, matokeo ya ambayo
ni kwamba mimi wanaweza kuwa na nafasi kwa ajili ya bure kitu nimekuwa malloced.
Hivyo mimi nina kujaribu kutumia kama kiasi ya stack ni naweza hapa.
>> Next up, rundo zima la kwa dos.
vipimo itakuwa zinasema juu ya nini hasa inategemewa hapa,
lakini maoni kukupa ladha ya kile uongo mbele.
Wewe kwanza haja ya kuhalalisha ombi line
na kuhakikisha kwamba inaonekana kama specifikationer sarufi, hivyo kusema,
anasema ni lazima.
Wewe basi haja ya kutafuta kitu kuitwa swala, stuff nje
baada ya swali alama, kama tuliona kwa mfano wetu Google
katika kupita katika HD parameter.
Sisi basi concatenate pamoja mizizi ya mtandao wa kompyuta
na njia hiyo ni katika kwamba ombi la kwanza line
na kuunda njia kamili ya faili tunataka kuangalia kwa.
>> Baada ya hapo, tunakwenda kuhakikisha kwamba faili ipo na someka.
Na kisha tunakwenda dondoo yake faili ugani, .html au .php,
au baadhi ya ugani kama hiyo katika mwisho kabisa wa kamba ombi.
Next up ni mzima rundo la code tuliandika
kwa kweli kuzalisha PHP yanayoletwa kwa ajili yenu.
Kwa kifupi, hii code inachukua katika jina
ya faili unataka PHP kutafsiri.
Sisi kupita na kitu kinachoitwa bomba katika mkalimani PHP ya.
Kupata nyuma majibu kana majibu walikuwa faili yenyewe.
Na kisha sisi iterate juu ya kwamba faili ya ka, kuunganisha wote katika buffer moja
ili tuweze hatimaye magazeti yao nje.
>> Hakika, haya yote wito hapa dprintf
inaruhusu sisi magazeti kitu kuitwa faili descriptor, ambayo
ni tu integer kwamba inawakilisha file.
Sawa sana katika roho, lakini tofauti kimsingi kutoka faili
nyota pointer.
Angalia jinsi unaweza kutumia syntax kama printf hapa ili niweze dynamically
kuingiza kitu kama urefu kwa thamani ya header HTTP
kuitwa Content-Length.
Na hatimaye Nilikuwa kazi haki ya kweli kuandika
mwili na ombi.
>> Kwa bahati mbaya, sisi tu kutekelezwa msaada kwa ajili ya dynamically
yanayotokana PHP files.
Sisi haikutekeleza msaada kwa ajili ya tuli files kama gifs, na jpegs,
na CSS na HTML files.
Kwamba, kwa bahati mbaya, ni wa kushoto na wewe kujibu kusudi mteja
hii kufanya.
Hivyo katika huko utapata kwamba kuna si msukumo sana ndani ya kuzuia kwamba,
lakini kama wewe juu kidogo hadi saa jinsi tulikwenda kuhusu kutafsiri PHP code,
kazi utasikia kutumia ni tofauti kidogo.
>> Kwa kweli, unaweza kukopa baadhi ya utendaji
labda kutoka forensics tatizo kuweka, kwa sababu
mwisho wa siku wote unahitaji kufanya hapa ni mara moja unajua nini faili wazi
na mara moja unajua ni kinachojulikana Aina ya MIME au aina ya maudhui,
unahitaji kusoma katika bytes wale na kwa namna fulani mate yao nyuma nje.
>> Na sasa ziara ya hii faili ya kazi nyingine.
Up kwanza ni kushikamana, ambayo tu anarudi kweli
wakati hatimaye kusikia uhusiano kutoka kwa mtumiaji.
Next up ni kosa.
Kosa, wakati huo huo, kama kazi sisi aliandika kushughulikia yote ya tofauti 400
na hadhi 500 HTTP codes kwamba unaweza kutaka
kutuma nyuma kwa mtumiaji, pamoja na ujumbe standard.
>> Next up ni mzigo, hasa kazi meaty, ambao lengo katika maisha
ni kusoma kutoka faili nyota pointer yaliyomo ya faili katika buffer kimataifa
kwamba sisi alitangaza kimataifa juu [? kuu. ?]
Hii ni kidogo tata kwa sababu sisi kusoma ka kutoka faili
lakini kuangalia juu ya kila iteration kama tumekuwa tayari
hit mwisho wa faili au kitu kingine amekwenda vibaya.
Na sisi kutumia realloc kuhakikisha kwamba chochote buffer tunavyotumia ni kuongezeka
na kukua na kuongezeka na daima kukaa kabla ya idadi ya ka
kuwa tunahitaji walionao katika huko.
Handler, wakati huo huo, ni kazi ambayo anapata
kuitwa kwa njia ya kuwa na kusajiliwa Kudhibiti C kama ishara
kwamba tunataka kukatiza.
Ona hapa katika handler kwamba hatimaye
wito kuacha, ambayo bila shaka ataacha mtandao wa kompyuta.
Na kwa bahati mbaya, lookup haijatekelezwa.
Katika roho, hii ni haki rahisi kazi.
Kutokana na faili ugani, inahitaji kurudi ni kinachojulikana MIME
aina au aina ya maudhui.
Na sisi kutaja katika vipimo nini ramani kwamba lazima.
Lakini unahitaji kutafsiri hatimaye kwa c code.
>> Next up ni kazi yetu vile vile meaty kuitwa parse, lengo lake katika maisha
ni kusoma, si kutoka faili, lakini kutokana na uhusiano wa mtandao.
Hasa, kusoma na parsing Ombi HTTP hiyo kuja kutoka browser
kwa server ili hatimaye tunaweza Hazrat
saa tu headers katika ombi line na kurudi wale na wewe
kwa njia ya buffer kimataifa ambayo sisi alitangaza juu [? kuu. ?]
>> Rudisha, wakati huo huo, ni kazi ambayo sisi kufafanua
kwamba anapata kuitwa iteratively ndani ya kuu kila wakati wewe ni kuhusu
tayari kuanza kusikiliza kwa ajili ya uhusiano mpya
ili sisi daima kujua hali ya vigezo wetu
na hivyo kuwa tumekuwa pia huru kumbukumbu yoyote kwamba
anaweza kuwa zimetengwa kwa ajili ya uliopita uhusiano wa mtandao.
Next up yaani kuanza, kazi ambayo sisi aliandika
ambayo ina nzima mengi ya mitandao code
kwamba hatimaye kuanza server mtandao.
>> Mwisho up ni kazi kuitwa stop, ambayo
gani hasa kwamba, ni ataacha mtandao wa kompyuta.
Lakini kwanza ni frees up kumbukumbu yoyote kwamba bado zimetengwa.
Lakini hatimaye wito exit bila hata kurudi kudhibiti
kwa kazi yetu kuu.
Hatimaye, moja ya mbinu muhimu zaidi
wakati utekelezaji wa server mtandao huu ni kwenda kuwa kidogo ya kesi na makosa,
kuwa browser moja dirisha wazi kulia na dirisha terminal katika
kushoto, servrar console dirisha, ili
unaweza kuona ujumbe kwamba ni kuwa visas kwenye screen.
>> Lakini bado bora itakuwa ya tatu dirisha, terminal dirisha pili,
katika ambayo unaweza kutumia Telnet, matumizi ambayo ni eda katika spec.
Na Telnet ni tu sana mtandao mpango rahisi
ambayo inakuwezesha kujifanya kuwa browser katika dirisha moja
wakati kuzungumza na dirisha nyingine.
Kwa njia hii unaweza kuona hasa amri textual
ambayo ni kuja nyuma kutoka server kwa mteja
bila ya kuwa na poking karibu developer chrome ya
zana katika vinginevyo clunkier interface.