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.