1 00:00:00,000 --> 00:00:09,647 2 00:00:09,647 --> 00:00:11,730 Tagapagsalita: Ngayon sabihin dive sa code ng pamamahagi 3 00:00:11,730 --> 00:00:14,470 at tumingin sa konteksto kung saan ang code isulat mo 4 00:00:14,470 --> 00:00:15,780 Mawawala na tumatakbo. 5 00:00:15,780 --> 00:00:17,350 Sa pagtatapos ng araw, ka ng pagpunta sa ipatupad 6 00:00:17,350 --> 00:00:18,710 ang kabuuan ng web server. 7 00:00:18,710 --> 00:00:20,460 Ngunit na ibinigay namin sa inyo ang balangkas 8 00:00:20,460 --> 00:00:24,090 code na mayroon ilang mga pag-andar, lalo na may kaugnayan sa networking. 9 00:00:24,090 --> 00:00:25,390 Tingnan natin ang isang hitsura. 10 00:00:25,390 --> 00:00:27,560 >> Kaya dito patungo sa tuktok ng file ay isang bungkos 11 00:00:27,560 --> 00:00:30,020 ng tampok na subukan ang macro kinakailangan. 12 00:00:30,020 --> 00:00:33,570 Ngayon ito ay isang tampok na lamang ng c, kung saan ayon sa isang grupo ng tao na pahina 13 00:00:33,570 --> 00:00:36,410 kailangan mong tukuyin ang ilan sa mga constants para maging totoo 14 00:00:36,410 --> 00:00:39,920 o maging kahit tukoy na numero ng sa gayon ay mayroon kang access sa ilang mga pag-andar. 15 00:00:39,920 --> 00:00:42,470 Kung hindi man sila ay hindi nagbigay-alam at hindi ka magkakaroon ng access. 16 00:00:42,470 --> 00:00:45,340 Kaya ginawa ko na ito sa pamamagitan ng paraan ng pagbabasa ng mga pahina ng tao. 17 00:00:45,340 --> 00:00:48,410 Ngayon pababa sa ibaba, sa mga linya 15 sa pamamagitan ng 17, namin 18 00:00:48,410 --> 00:00:50,550 magkaroon ng isang buong bungkos ng mga limitasyon ng ipinahayag. 19 00:00:50,550 --> 00:00:53,370 >> At hiniram na namin ang mga mula sa isang tanyag na web server na tinatawag na Apache. 20 00:00:53,370 --> 00:00:54,650 At ang mga ito ay lamang mga numero na pupunta 21 00:00:54,650 --> 00:00:56,810 lilimitahab ang kabuuang bilang ng mga byte na pinahihintulutan 22 00:00:56,810 --> 00:01:01,930 sa iba't ibang konteksto para sa mga kahilingan ng HTTP na ang isang browser pinahintulutan upang ipadala sa akin. 23 00:01:01,930 --> 00:01:04,310 Sunod, tukuyin ang aming mga octet. 24 00:01:04,310 --> 00:01:07,790 Ngayon isang octet lamang magarbong paraan ng sinasabi ng isang byte, o walong bits. 25 00:01:07,790 --> 00:01:10,720 Ino-out sa nakalipas na panahon isang byte ay hindi nangangahulugang walong bits, 26 00:01:10,720 --> 00:01:12,339 kaya octet ay laging walong bits. 27 00:01:12,339 --> 00:01:14,880 Kaya sa kasong ito na pinagtibay namin kung ano ang karaniwang sa networking 28 00:01:14,880 --> 00:01:17,410 mundo ng pagtawag sa walong mga byte isang octet. 29 00:01:17,410 --> 00:01:21,840 >> Narito tiniyak ko na octet habilin maging 512, nang sa gayon ay halos tulad ng sa forensics 30 00:01:21,840 --> 00:01:24,170 kapag binabasa namin ang isang bungkos ng bytes sa isang pagkakataon, dito masyadong, 31 00:01:24,170 --> 00:01:27,390 kami ay pagpunta sa basahin ang isang bungkos ng mga octet sa isang pagkakataon. 32 00:01:27,390 --> 00:01:28,922 Susunod ang maramihang mga header ng file. 33 00:01:28,922 --> 00:01:30,255 Paano mo alam ko na isama ang mga ito? 34 00:01:30,255 --> 00:01:32,730 Well ako basahin lamang ang tao mga pahina para sa isang bilang ng mga pag-andar 35 00:01:32,730 --> 00:01:35,620 na gagamitin namin sa pamamahagi code at isama sa mga 36 00:01:35,620 --> 00:01:37,390 Ako ay itinagubilin sa. 37 00:01:37,390 --> 00:01:39,090 >> At ngayon kami ay may isang uri ng data. 38 00:01:39,090 --> 00:01:41,470 Ipinahayag kami ng isang octet na isang pansamantalang trabaho. 39 00:01:41,470 --> 00:01:44,040 At kami makita sa ibang pagkakataon na iyon ginagamit sa buong code. 40 00:01:44,040 --> 00:01:45,670 At kami ay nagpahayag ng ang maramihang mga modelo, 41 00:01:45,670 --> 00:01:47,961 at kami maglakad nang mabilis sa pamamagitan ng bawat isa sa mga function. 42 00:01:47,961 --> 00:01:50,400 Panghuli, at marahil pinaka mahalaga na tandaan sa 43 00:01:50,400 --> 00:01:52,520 ayos lang sa ito point sa ang kuwento, ay mayroong 44 00:01:52,520 --> 00:01:54,520 ay, sa katunayan isang buo bungkos ng mga pangkalahatang variable 45 00:01:54,520 --> 00:02:00,430 sa tuktok ng file, ugat, CFD, SFD, kahilingan, file at katawan. 46 00:02:00,430 --> 00:02:03,960 >> Ngayon pangkalahatan, ang paggamit ng maraming mga global variable, o mga pangkalahatang variable sa lahat, 47 00:02:03,960 --> 00:02:05,280 ay hindi ang kasanayan likod. 48 00:02:05,280 --> 00:02:09,090 Ngunit ito ay lumiliko out din namin ang gumagamit ka ng diskarte na tinatawag na pangangasiwa signal sa ibang pagkakataon 49 00:02:09,090 --> 00:02:11,930 sa code, na nagbibigay-daan sa amin upang matukoy kapag pinindot ng user ang isang bagay 50 00:02:11,930 --> 00:02:15,080 tulad ng CTRL C at shut down ang server maganda. 51 00:02:15,080 --> 00:02:18,240 At upang gawin iyon maganda at talagang libre up ng memorya, 52 00:02:18,240 --> 00:02:20,800 kailangan namin upang magkaroon ng access sa mga pangkalahatang variable. 53 00:02:20,800 --> 00:02:24,510 >> At ngayon hayaan tumagal ng isang pagtingin sa pangunahing, na humihimok ang kabuuan ng programang ito. 54 00:02:24,510 --> 00:02:27,720 Una, sa dito sa tuktok namin May isang error sa numero ng variable 55 00:02:27,720 --> 00:02:29,570 na lumilitaw na hindi magkaroon ng isang uri, ngunit iyan ay 56 00:02:29,570 --> 00:02:31,500 dahil ito ay talagang nilinaw sa isang file na tinatawag na 57 00:02:31,500 --> 00:02:34,800 Error sa errno.h na Kasama mas mataas up. 58 00:02:34,800 --> 00:02:38,780 Kung gagawin mo tao errno upang aktwal na makita ang mga kahulugan para sa bagay na ito, 59 00:02:38,780 --> 00:02:41,230 makikita mo na ito ay isang espesyal na global variable na 60 00:02:41,230 --> 00:02:43,350 Naka-set sa pamamagitan ng isang buong bungkos ng mga pag-andar hindi nakasulat 61 00:02:43,350 --> 00:02:48,730 sa pamamagitan ng sa amin, ngunit sa pamamagitan ng ang may-akda ng Linux at iba pang mga system upang aktwal na-set 62 00:02:48,730 --> 00:02:52,400 isang numero na variable kapag ang isang bagay na napupunta mali sa gayon ay maaari kang buong mundo 63 00:02:52,400 --> 00:02:54,830 malaman kung ano ang ginawa magkamali. 64 00:02:54,830 --> 00:02:58,540 >> Ngayon pababa sa ibaba makikita mo ang isang bagong diskarte di kaya gamit getopt, 65 00:02:58,540 --> 00:03:01,790 isang katangian na nakakatulong sa pag-parse utos argumento linya nang sa gayon ay hindi namin 66 00:03:01,790 --> 00:03:05,540 mag-abala sa oras ng pag-aaksaya ang pag-uunawa kung paano i-parse ang isang bagay tulad ng 8080, 67 00:03:05,540 --> 00:03:08,350 o gitling p, o gitling h upang makakuha ng tulong. 68 00:03:08,350 --> 00:03:10,300 talaga ang ginagawa getopt na para sa amin. 69 00:03:10,300 --> 00:03:11,750 Tingnan ang pahina ng tao para sa higit pa. 70 00:03:11,750 --> 00:03:13,960 >> Susunod, nagsasagawa kami ng kaunting error -check upang masiguro na 71 00:03:13,960 --> 00:03:17,420 na ang numero ng port ay sa loob ng sa tinukoy na saklaw sa spec. 72 00:03:17,420 --> 00:03:20,240 Susunod, makikita natin ang isang tawag sa pagpapaandar na simulan, na ang kahulugan namin 73 00:03:20,240 --> 00:03:24,040 Tingnan natin ang ilang mga sandali, at bilang ang pangalan nito nagmumungkahi, nagsisimula ito sa web server. 74 00:03:24,040 --> 00:03:26,960 Narito mayroon kami ng isang tawag sa isang function tinatawag na signal na nagsasabing, 75 00:03:26,960 --> 00:03:30,750 kung at kapag naririnig mo ang Control C mula sa keyboard ng gumagamit, sige at tawagan ang 76 00:03:30,750 --> 00:03:34,650 isang function na tinatawag na handler na nangyayari up at tumigil sa huli ay malinis na bagay 77 00:03:34,650 --> 00:03:35,500 sa server. 78 00:03:35,500 --> 00:03:39,470 >> Nasa ibaba iyon ang lalabas na isang walang hanggan loop, ang unang linya ng na 79 00:03:39,470 --> 00:03:41,660 mabisa ay isang tawag sa isang function na tinatawag na 80 00:03:41,660 --> 00:03:45,110 i-reset, na namin ang aming sarili ipatupad sa ibang pagkakataon upang 81 00:03:45,110 --> 00:03:47,470 upang magbakante ng ilan sa aming mga global na mga estado. 82 00:03:47,470 --> 00:03:50,480 Pagkatapos noon ay isang linya ng code na nang may pasubali 83 00:03:50,480 --> 00:03:52,576 ay pagsuri sa pagbalik halaga ng mga konektadong. 84 00:03:52,576 --> 00:03:55,700 Nakakonekta na ngayon ang hitsura tulad ng isang tambalan, isang bagay na nagbabalik totoo o hindi. 85 00:03:55,700 --> 00:03:58,040 At ginagawa nito, ngunit mayroong isang bagay na espesyal sa mga nakakonektang 86 00:03:58,040 --> 00:03:59,960 sa ito ay isang pag-block tawag. 87 00:03:59,960 --> 00:04:03,180 Ito ay umupo doon at maghintay hanggang sa browser ng user 88 00:04:03,180 --> 00:04:05,860 Sinusubukan upang kumonekta sa web server at lamang pagkatapos ang ito 89 00:04:05,860 --> 00:04:10,160 bumalik tama o mali sa gayon ay magpatuloy namin sa loob ng ito kung statement. 90 00:04:10,160 --> 00:04:13,870 >> Sa sandaling nandoon na, mapansin ang function na ito sa isang function na tinatawag na pag-parse, na sinulat ni namin, 91 00:04:13,870 --> 00:04:17,230 Pina-parse saan ang lahat ng mga octet, ang lahat ng ng mga byte na nanggagaling mula sa isang browser 92 00:04:17,230 --> 00:04:21,010 sa server, upang maaari naming ipasa bumalik ka sa huli ng isang halaga sa isa 93 00:04:21,010 --> 00:04:24,420 ng mga pangkalahatang variable na Nag-iimbak ang lahat ng mga byte in lamang 94 00:04:24,420 --> 00:04:26,630 ang mga header ng na kahilingan, hindi ang katawan 95 00:04:26,630 --> 00:04:28,920 kung mayroong talagang isang katawan dito. 96 00:04:28,920 --> 00:04:32,980 >> Ngayon pababa sa ibaba simulan namin upang -parse ang mga header i-extract 97 00:04:32,980 --> 00:04:35,490 isang subset ng mga impormasyon na namin na nagmamalasakit sa. 98 00:04:35,490 --> 00:04:37,740 Sa partikular, ayon sa mga pagtutukoy, muna namin 99 00:04:37,740 --> 00:04:40,580 Nais upang humiling ng linya, na lamang na ang pinaka unang linya na 100 00:04:40,580 --> 00:04:45,710 sana sabi ni isang bagay tulad get mabawasan nang malaki o ilan path at pagkatapos ay HTTP 1.1. 101 00:04:45,710 --> 00:04:48,150 Ginagamit namin ang talinghaga ng isang karayom ​​sa isang mandala ng dayami 102 00:04:48,150 --> 00:04:50,370 upang maghanap ng mga partikular na char o address. 103 00:04:50,370 --> 00:04:53,120 At sa katunayan, mayroong isang bilang ng mga function sa aming pamamahagi ng code 104 00:04:53,120 --> 00:04:56,930 na ikaw, masyadong, maaaring kapaki-pakinabang kapag naghahanap para sa partikular na halaga. 105 00:04:56,930 --> 00:05:00,630 >> Sa huli, kopyahin namin ang mga bytes sa linya sa isang variable na tinatawag na, 106 00:05:00,630 --> 00:05:03,510 na mapansin, masyadong, hindi namin inilalaan sa stack 107 00:05:03,510 --> 00:05:05,890 sa pamamagitan ng paraan ng isang dynamic na kasing laki ng array. 108 00:05:05,890 --> 00:05:08,350 At sadyang naming sinusubukang upang maiwasan ang pagtawag malloc 109 00:05:08,350 --> 00:05:11,100 dahil muli, dahil Pagkontrol ng pagiging C 110 00:05:11,100 --> 00:05:14,630 ang isang potensyal na tampok ng programang ito, kami ayaw mong magkaroon ang code na ito bigla 111 00:05:14,630 --> 00:05:17,479 Naantala ng pagpindot ng user Control C, ang resulta ng kung saan 112 00:05:17,479 --> 00:05:20,270 ay na hindi ko maaaring mayroon ng isang pagkakataon para sa libreng isang bagay na malloced ko. 113 00:05:20,270 --> 00:05:23,660 Kaya sinusubukan ko upang magamit bilang magkano ng stack ay maaari ko dito. 114 00:05:23,660 --> 00:05:26,040 >> Susunod, ang maramihang mga mag-dos. 115 00:05:26,040 --> 00:05:28,930 Pagtutukoy ay magpaliwanag sa eksakto kung ano ang inaasahan dito, 116 00:05:28,930 --> 00:05:31,800 ngunit ang mga komento magbibigay sa iyo ng isang pahiwatig ng kung ano ang namamalagi maaga. 117 00:05:31,800 --> 00:05:33,830 Kailangan mo munang patunayan ang mga linya kahilingan 118 00:05:33,830 --> 00:05:37,760 at tiyakin na mukha itong pagtutukoy grammar, kaya na magsalita, 119 00:05:37,760 --> 00:05:38,541 Sinasabi sa nararapat. 120 00:05:38,541 --> 00:05:41,290 Pagkatapos ay kailangan mong i-extract ang isang bagay tinatawag na query, ang mga bagay out 121 00:05:41,290 --> 00:05:44,200 pagkatapos ng tandang pananong, tulad ng Nakita namin sa aming mga halimbawa Google 122 00:05:44,200 --> 00:05:46,320 sa pagpasa sa isang parameter ng HD. 123 00:05:46,320 --> 00:05:49,050 Pagkatapos ay pagdugtungin kami magkasama ang root ng web server 124 00:05:49,050 --> 00:05:52,520 sa landas na nasa na kahilingan unang linya 125 00:05:52,520 --> 00:05:56,010 at bumuo ng ang buong landas ng ang file na nais namin upang tumingin para sa. 126 00:05:56,010 --> 00:06:00,300 >> Pagkatapos noon, kami ay pagpunta sa tiyakin kung umiiral ang file at naka-nababasa. 127 00:06:00,300 --> 00:06:05,100 At pagkatapos kami ay pagpunta sa kunin nito extension ng file, ang .html o ang .php, 128 00:06:05,100 --> 00:06:09,920 o ilang tulad ng extension na sa pinakadulo ng ang hiniling na string. 129 00:06:09,920 --> 00:06:11,940 Susunod up ay isang buo bungkos ng code na sinulat namin 130 00:06:11,940 --> 00:06:15,800 upang aktwal na bumuo ng PHP nilalaman para sa iyong binuo. 131 00:06:15,800 --> 00:06:18,010 Sa maikling salita, ito tumatagal ng code sa pangalan 132 00:06:18,010 --> 00:06:20,250 ng file na nais mong PHP i-interpret. 133 00:06:20,250 --> 00:06:24,630 Ipasa namin ito sa pamamagitan ng isang bagay na tinatawag isang pipe sa interpreter PHP ni. 134 00:06:24,630 --> 00:06:28,060 Kumuha ng mga pabalik sa tugon na waring ang tugon ay isang mismong file. 135 00:06:28,060 --> 00:06:32,110 At pagkatapos ay umulit namin sa paglipas na file bytes, kumukuha ang lahat ng ito sa isang buffer 136 00:06:32,110 --> 00:06:34,180 sa gayon ay maaari naming sa huli i-print ang mga ito out. 137 00:06:34,180 --> 00:06:37,230 >> Sa katunayan, ang lahat ng mga tawag dito upang dprintf 138 00:06:37,230 --> 00:06:40,110 Binibigyang-daan sa amin upang mag-print ng isang bagay tinatawag na isang file descriptor, na 139 00:06:40,110 --> 00:06:42,350 lamang ng isang integer na kumakatawan sa isang file. 140 00:06:42,350 --> 00:06:45,360 Na halos kapareho sa espiritu, ngunit sa panimula naiiba mula sa isang file 141 00:06:45,360 --> 00:06:46,620 star pointer. 142 00:06:46,620 --> 00:06:50,260 Pansinin kung paano mo maaaring gamitin ang syntax tulad ng printf dito nang sa gayon ay maaari ko nang pabago-bago 143 00:06:50,260 --> 00:06:54,000 ipasok ang isang bagay tulad ng haba para sa halaga ng isang HTTP header 144 00:06:54,000 --> 00:06:55,270 tinatawag na Content-Length. 145 00:06:55,270 --> 00:06:57,990 At sa huli kong ginagamit ang karapatan sa aktwal na magsulat ng function 146 00:06:57,990 --> 00:07:00,040 ang katawan sa kahilingan. 147 00:07:00,040 --> 00:07:03,750 >> Sa kasamaang palad, tanging ang ipinatupad namin suporta para sa mga dynamic na 148 00:07:03,750 --> 00:07:05,350 nabuo ang mga file na PHP. 149 00:07:05,350 --> 00:07:08,520 Hindi namin ipatupad ang suporta para sa static na mga file tulad ng gifs, at jpeg, 150 00:07:08,520 --> 00:07:10,660 at CSS at HTML file. 151 00:07:10,660 --> 00:07:14,450 Iyon, sa kasamaang-palad, na naiwan sa iyo upang tumugon sa mga layunin ng kliyente 152 00:07:14,450 --> 00:07:15,090 ito gawin. 153 00:07:15,090 --> 00:07:20,050 Kaya sa may kakailanganin mong makita na mayroong Hindi magkano inspirasyon sa loob ng bloke, 154 00:07:20,050 --> 00:07:23,520 ngunit kung ang isang maliit na mas mataas up sa kung paano nagpunta kami tungkol sa pagbibigay-kahulugan sa code na PHP, 155 00:07:23,520 --> 00:07:25,520 ang mga pag-andar gagamitin mo ay medyo naiiba. 156 00:07:25,520 --> 00:07:27,561 >> Sa katunayan, maaari mong humiram ang ilan sa mga pag-andar 157 00:07:27,561 --> 00:07:29,620 marahil mula sa forensics hanay problema, dahil 158 00:07:29,620 --> 00:07:32,860 sa pagtatapos ng araw ang lahat ng kailangan mong gawin dito ay sa sandaling malaman mo kung ano mabuksan ang file 159 00:07:32,860 --> 00:07:35,690 at sa sandaling alam mo na ito ay tinatawag na Uri ng MIME o uri ng nilalaman, 160 00:07:35,690 --> 00:07:39,040 kailangan mong basahin sa mga bytes at kahit papaano ay dumura ang mga ito pabalik out. 161 00:07:39,040 --> 00:07:41,190 >> At ngayon sa isang tour ng ito iba pang mga pag-andar file. 162 00:07:41,190 --> 00:07:43,820 Hanggang unang nakakonekta, na nagbabalik lamang totoo 163 00:07:43,820 --> 00:07:47,350 kapag ito sa wakas ay nakakarinig ng koneksyon mula sa isang user. 164 00:07:47,350 --> 00:07:48,786 Susunod up ay error. 165 00:07:48,786 --> 00:07:52,296 Error, samantala, bilang isang katangian namin ay sumulat upang pangasiwaan ang lahat ng mga iba't-ibang 400 166 00:07:52,296 --> 00:07:55,360 at 500 HTTP status mga code na maaaring gusto 167 00:07:55,360 --> 00:07:58,500 upang magpadala ng pabalik sa gumagamit, kasama ang isang karaniwang mensahe. 168 00:07:58,500 --> 00:08:01,950 >> Susunod up ay load, isang partikular na parang karne ng function, na ang layunin sa buhay 169 00:08:01,950 --> 00:08:06,920 ay na magbasa mula sa isang file star pointer ang mga nilalaman ng isang file papunta sa isang pandaigdigang buffer 170 00:08:06,920 --> 00:08:09,000 na ipinahayag namin sa buong mundo sa itaas [? pangunahing. ?] 171 00:08:09,000 --> 00:08:12,649 Ito ay isang bit complex dahil namin mayroon na basahin ang mga byte mula sa file 172 00:08:12,649 --> 00:08:14,690 ngunit suriin sa bawat pag-ulit kung hindi namin na 173 00:08:14,690 --> 00:08:17,600 pindutin ang dulo ng file o ibang bagay maling naganap. 174 00:08:17,600 --> 00:08:21,210 At ginagamit namin realloc upang matiyak na kahit anong buffer na aming ginagamit ay lumalaking 175 00:08:21,210 --> 00:08:24,440 at lumalaki at lumalaki at palaging naglalagi nang mas maaga sa ang bilang ng mga byte 176 00:08:24,440 --> 00:08:25,675 na kailangan namin upang magkasya sa doon. 177 00:08:25,675 --> 00:08:27,550 Handler, samantala, ay ang function na ay makakakuha ng 178 00:08:27,550 --> 00:08:30,630 na tinatawag na sa pamamagitan ng paraan ng pagkakaroon nakarehistro Control C bilang isang signal 179 00:08:30,630 --> 00:08:32,140 na gusto naming agawin. 180 00:08:32,140 --> 00:08:34,070 Pansinin dito sa handler na ito sa huli 181 00:08:34,070 --> 00:08:36,780 tawag itigil, na siyempre Humihinto ang web server. 182 00:08:36,780 --> 00:08:39,750 At sa kasamaang-palad, ang paghahanap Hindi ipinatupad. 183 00:08:39,750 --> 00:08:41,940 Sa diwa, ito ay isang medyo simple function. 184 00:08:41,940 --> 00:08:44,900 Binigyan ng extension ng file, kailangan nito upang bumalik ito ay tinatawag na ng MIME 185 00:08:44,900 --> 00:08:46,320 uri o uri ng nilalaman. 186 00:08:46,320 --> 00:08:49,260 At aming tinukoy sa pagtutukoy kung ano ang dapat na pagma-map. 187 00:08:49,260 --> 00:08:52,330 Ngunit kailangan mo upang i-translate ito sa huli upang c code. 188 00:08:52,330 --> 00:08:56,490 >> Susunod ay ang aming parehong pag-andar parang karne na tinatawag na pag-parse, na ang layunin sa buhay 189 00:08:56,490 --> 00:08:59,350 ay upang basahin, hindi mula sa isang file, ngunit mula sa isang koneksyon sa network. 190 00:08:59,350 --> 00:09:03,510 Sa partikular, pagbabasa at pag-parse ng Kahilingan ng HTTP na dumating mula sa isang browser 191 00:09:03,510 --> 00:09:05,940 sa server upang ang sa huli maaari naming i-parse 192 00:09:05,940 --> 00:09:09,530 sa lamang ang mga header sa kahilingan linya at ibalik ang mga sa iyo 193 00:09:09,530 --> 00:09:12,720 sa pamamagitan ng paraan ng isang pandaigdigang buffer na ipinahayag namin sa itaas [? pangunahing. ?] 194 00:09:12,720 --> 00:09:14,880 >> I-reset ang, samantala, ay isang function na namin tukuyin ang 195 00:09:14,880 --> 00:09:18,730 na tinatawag ay makakakuha ng iteratively loob ng pangunahing tuwing ikaw ay tungkol sa 196 00:09:18,730 --> 00:09:20,799 handa nang magsimulang makinig para sa isang bagong koneksyon 197 00:09:20,799 --> 00:09:22,840 nang sa gayon ay palagi naming malaman ang estado ng aming mga variable 198 00:09:22,840 --> 00:09:24,870 at sa gayon ay nai din namin napalaya anumang memorya na 199 00:09:24,870 --> 00:09:28,070 maaaring na-ilaan para sa isang nakaraang koneksyon sa network. 200 00:09:28,070 --> 00:09:30,060 Susunod ay kung magsimula, ang -andar na aming sinulat ni 201 00:09:30,060 --> 00:09:31,920 na naglalaman ng isang buong maraming networking code 202 00:09:31,920 --> 00:09:34,420 na ganap na nagsisimula sa web server. 203 00:09:34,420 --> 00:09:36,680 >> Huling up ay ang pag-andar tinatawag na stop, na 204 00:09:36,680 --> 00:09:38,770 ang eksaktong iyon, Humihinto ang web server. 205 00:09:38,770 --> 00:09:42,270 Ngunit unang pinakakawalan nito isang anumang memory Na-na inilalaan pa rin. 206 00:09:42,270 --> 00:09:45,850 Pero sa huli tawag exit walang kahit bumabalik kontrol 207 00:09:45,850 --> 00:09:47,480 sa aming mga pangunahing pag-andar. 208 00:09:47,480 --> 00:09:49,480 Sa huli, ang isa sa mga pinakamahalagang mga diskarte 209 00:09:49,480 --> 00:09:52,680 kapag ang pagpapatupad ng mga web server na ito ay pagpunta sa maging isang bit ng pagsubok at error, 210 00:09:52,680 --> 00:09:55,886 pagkakaroon ng window bukas isang browser sa kanan at isang terminal na window sa 211 00:09:55,886 --> 00:09:57,760 ang natitira, ang mga server ng console window, nang sa gayon ay 212 00:09:57,760 --> 00:10:00,420 maaaring makita ang mga mensahe na na ipinapakita sa screen. 213 00:10:00,420 --> 00:10:04,170 >> Pero mas mahusay pa rin ng isang third window, ang pangalawang terminal na window, 214 00:10:04,170 --> 00:10:07,135 sa kung saan mo ginagamit Telnet, ang paggamit na kung saan ay inireseta sa spec. 215 00:10:07,135 --> 00:10:09,640 At Telnet lamang ang napaka simpleng programa ng network 216 00:10:09,640 --> 00:10:12,660 na nagbibigay-daan sa iyo upang magpanggap maging isang browser sa isang window 217 00:10:12,660 --> 00:10:14,540 habang pakikipag-usap sa kabilang window. 218 00:10:14,540 --> 00:10:16,830 Sa ganitong paraan maaari mong makita ang nang eksakto ang tekstuwal mga utos 219 00:10:16,830 --> 00:10:18,700 na bumabalik mula sa server sa client 220 00:10:18,700 --> 00:10:20,810 nang hindi na kinakailangang poking sa paligid ng nag-develop ng chrome 221 00:10:20,810 --> 00:10:24,010 mga tool sa isang kung hindi man ay clunkier interface. 222 00:10:24,010 --> 00:10:29,099