1 00:00:00,000 --> 00:00:09,647 2 00:00:09,647 --> 00:00:11,730 अध्यक्ष: अब चलो गोता वितरण कोड में 3 00:00:11,730 --> 00:00:14,470 और संदर्भ पर एक नज़र रखना जिसमें कोड तुम लिखो 4 00:00:14,470 --> 00:00:15,780 संचालन किया जा रहा है। 5 00:00:15,780 --> 00:00:17,350 दिन के अंत में, आप को लागू करने के लिए जा रहे हैं 6 00:00:17,350 --> 00:00:18,710 वेब सर्वर की सम्पूर्णता। 7 00:00:18,710 --> 00:00:20,460 लेकिन हम प्रदान की है कंकाल के साथ आप 8 00:00:20,460 --> 00:00:24,090 कुछ कार्यक्षमता है कि कोड, विशेष रूप से नेटवर्किंग से संबंधित है। 9 00:00:24,090 --> 00:00:25,390 चलो एक नज़र रखना। 10 00:00:25,390 --> 00:00:27,560 >> यहाँ शीर्ष की ओर तो फ़ाइल का एक गुच्छा है 11 00:00:27,560 --> 00:00:30,020 सुविधा की मैक्रो आवश्यकताओं का परीक्षण करें। 12 00:00:30,020 --> 00:00:33,570 अब इस सी, जिससे की सिर्फ एक विशेषता यह है मैन पेज का एक गुच्छा के अनुसार 13 00:00:33,570 --> 00:00:36,410 आप में से कुछ को परिभाषित किया है इन स्थिरांक सच करने के लिए 14 00:00:36,410 --> 00:00:39,920 या तो यह है कि यहां तक ​​कि विशिष्ट संख्या होने के लिए आप कुछ कार्यों के लिए उपयोग किया है। 15 00:00:39,920 --> 00:00:42,470 अन्यथा वे अघोषित हो जाएगा और आप उपयोग नहीं होगा। 16 00:00:42,470 --> 00:00:45,340 तो मैं जिस तरह से यह किया है मैन ऑफ द पृष्ठों को पढ़ने। 17 00:00:45,340 --> 00:00:48,410 अब नीचे में 17 लाइनों के माध्यम से 15, हम 18 00:00:48,410 --> 00:00:50,550 घोषित सीमा की एक पूरी गुच्छा है। 19 00:00:50,550 --> 00:00:53,370 >> और हम एक से इन उधार लिया है अपाचे बुलाया लोकप्रिय वेब सर्वर। 20 00:00:53,370 --> 00:00:54,650 और इन बस रहे हैं जा रहे हैं कि संख्या 21 00:00:54,650 --> 00:00:56,810 कुल संख्या टोपी बाइट्स की कि अनुमति दी जाती है 22 00:00:56,810 --> 00:01:01,930 HTTP अनुरोध के लिए विभिन्न संदर्भों में एक ब्राउज़र है कि मुझे भेजने के लिए अनुमति दी है। 23 00:01:01,930 --> 00:01:04,310 अगला, हम ओकटेट परिभाषित करते हैं। 24 00:01:04,310 --> 00:01:07,790 अब एक ओकटेट सिर्फ एक अच्छा तरीका है एक बाइट, या आठ बिट कहने का। 25 00:01:07,790 --> 00:01:10,720 पुराने एक बाइट में बदल जाता है जरूरी नहीं कि आठ बिट था, 26 00:01:10,720 --> 00:01:12,339 इसलिए ओकटेट हमेशा आठ बिट है। 27 00:01:12,339 --> 00:01:14,880 इसलिए इस मामले में हम अपनाया है क्या नेटवर्किंग में आम है 28 00:01:14,880 --> 00:01:17,410 आठ बाइट्स एक ओकटेट बुलाने की दुनिया। 29 00:01:17,410 --> 00:01:21,840 >> यहाँ मैं ओकटेट होगा कि निर्दिष्ट किया है इतना है कि ज्यादा फोरेंसिक में की तरह, 512 हो 30 00:01:21,840 --> 00:01:24,170 हम में से एक गुच्छा जब पढ़ें एक समय में बाइट्स, यहां भी 31 00:01:24,170 --> 00:01:27,390 हम एक को पढ़ने के लिए जा रहे हैं एक समय में ओकटेट का गुच्छा। 32 00:01:27,390 --> 00:01:28,922 हेडर फाइल की एक पूरी गुच्छा अगले। 33 00:01:28,922 --> 00:01:30,255 मैं कैसे इन में शामिल करने के लिए जानते हैं? 34 00:01:30,255 --> 00:01:32,730 वैसे मैं बस आदमी पढ़ा कार्यों का एक नंबर के लिए पृष्ठों 35 00:01:32,730 --> 00:01:35,620 हम इस वितरण में इस्तेमाल करेंगे कोड और लोगों में शामिल 36 00:01:35,620 --> 00:01:37,390 मैं करने के लिए निर्देश दिया गया था। 37 00:01:37,390 --> 00:01:39,090 >> और अब हम एक डेटा प्रकार है। 38 00:01:39,090 --> 00:01:41,470 हम एक चार होने के लिए एक ओकटेट घोषित कर दिया है। 39 00:01:41,470 --> 00:01:44,040 और हम हैं कि है कि बाद में देख लेंगे कोड भर में इस्तेमाल किया। 40 00:01:44,040 --> 00:01:45,670 और हम घोषित कर दिया है एक प्रोटोटाइप की पूरी गुच्छा, 41 00:01:45,670 --> 00:01:47,961 और हम के माध्यम से जल्दी से चलना होगा उन कार्यों में से प्रत्येक। 42 00:01:47,961 --> 00:01:50,400 अन्त में, और शायद सबसे में रखना जरूरी 43 00:01:50,400 --> 00:01:52,520 इस बिंदु में कम से मन कहानी यह है कि वहाँ 44 00:01:52,520 --> 00:01:54,520 वास्तव में, एक पूरी कर रहे हैं वैश्विक चर का गुच्छा 45 00:01:54,520 --> 00:02:00,430 फ़ाइल के शीर्ष पर, जड़, सीएफडी, SFD, अनुरोध, फाइल और शरीर। 46 00:02:00,430 --> 00:02:03,960 >> अब आम तौर पर, तो कई वैश्विक का उपयोग कर चर, या सभी को एक वैश्विक चर, 47 00:02:03,960 --> 00:02:05,280 वापस अभ्यास नहीं है। 48 00:02:05,280 --> 00:02:09,090 लेकिन यह है कि हम भी एक का उपयोग कर रहे हैं पता चला है तकनीक बुलाया संकेत से निपटने के बाद में 49 00:02:09,090 --> 00:02:11,930 हमें की अनुमति देता है, जो कोड में उपयोगकर्ता कुछ हिट जब पता लगा 50 00:02:11,930 --> 00:02:15,080 के लिए CTRL सी और शट डाउन की तरह इनायत सर्वर। 51 00:02:15,080 --> 00:02:18,240 और क्रम में शान से ऐसा करने के लिए और वास्तव में मुक्त स्मृति, 52 00:02:18,240 --> 00:02:20,800 हम करने के लिए उपयोग करने की आवश्यकता है इन वैश्विक चर। 53 00:02:20,800 --> 00:02:24,510 >> और अब के मुख्य पर एक नज़र, लेते हैं जो इस कार्यक्रम के पूरी तरह चलाता है। 54 00:02:24,510 --> 00:02:27,720 सबसे पहले, यहाँ शीर्ष पर हम एक त्रुटि संख्या चर 55 00:02:27,720 --> 00:02:29,570 कि नहीं प्रतीत होता है एक प्रकार है, लेकिन है कि 56 00:02:29,570 --> 00:02:31,500 यह वास्तव में है, क्योंकि नामक एक फाइल में परिभाषित 57 00:02:31,500 --> 00:02:34,800 त्रुटि errno.h जो उच्च ऊपर शामिल है। 58 00:02:34,800 --> 00:02:38,780 आप वास्तव में करने के लिए errno आदमी करते हैं इस बात के लिए परिभाषा देखते हैं, 59 00:02:38,780 --> 00:02:41,230 आप इस एक है कि देखेंगे विशेष वैश्विक चर कि 60 00:02:41,230 --> 00:02:43,350 एक पूरी गुच्छा द्वारा निर्धारित है कार्यों का लिखा नहीं 61 00:02:43,350 --> 00:02:48,730 हमारे द्वारा, लेकिन लिनक्स के लेखकों द्वारा और अन्य प्रणालियों वास्तव में स्थापित करने के लिए 62 00:02:48,730 --> 00:02:52,400 कि चर जब कुछ करने के लिए एक नंबर गलत हो जाता है कि आप विश्व स्तर पर कर सकते हैं कि इतना 63 00:02:52,400 --> 00:02:54,830 गलत जाना था पता लगाने की क्या। 64 00:02:54,830 --> 00:02:58,540 >> अब नीचे नीचे आप एक नया देखेंगे तकनीक शायद, getopt का उपयोग कर 65 00:02:58,540 --> 00:03:01,790 पार्स आदेश में मदद करता है कि एक समारोह लाइन तर्क हम नहीं करते तो यह है कि 66 00:03:01,790 --> 00:03:05,540 लगाना समय बर्बाद परेशान बाहर 8080 की तरह कुछ पार्स करने के लिए कैसे, 67 00:03:05,540 --> 00:03:08,350 या पानी का छींटा पी, या पानी का छींटा ज मदद पाने के लिए। 68 00:03:08,350 --> 00:03:10,300 getopt अनिवार्य रूप से हमारे लिए ऐसा करता है। 69 00:03:10,300 --> 00:03:11,750 अधिक जानकारी के लिए मैन पेज देखें। 70 00:03:11,750 --> 00:03:13,960 >> अगला, हम त्रुटि के एक सा है सुनिश्चित करने के लिए जाँच कर रहा है 71 00:03:13,960 --> 00:03:17,420 पोर्ट संख्या के भीतर है कि कल्पना में निर्दिष्ट सीमा होती है। 72 00:03:17,420 --> 00:03:20,240 अगला, हम समारोह के लिए एक फोन देखना जिसका परिभाषा, हम करेंगे शुरू 73 00:03:20,240 --> 00:03:24,040 एक पल में देखो, और अपने नाम के रूप में इस वेब सर्वर शुरू होता है, पता चलता है। 74 00:03:24,040 --> 00:03:26,960 यहाँ हम एक समारोह के लिए एक फोन है जो कहते हैं, कहा जाता है, संकेत, 75 00:03:26,960 --> 00:03:30,750 और अगर आप से नियंत्रण ग जब सुनते हैं उपयोगकर्ता के कीबोर्ड, आगे बढ़ो और कॉल 76 00:03:30,750 --> 00:03:34,650 जा रहा है कि एक समारोह में कहा जाता हैंडलर अंततः स्वच्छ चीजों को और रोक 77 00:03:34,650 --> 00:03:35,500 सर्वर। 78 00:03:35,500 --> 00:03:39,470 >> नीचे है कि एक प्रतीत होता है क्या अनंत लूप, पहली पंक्ति जिसमें से 79 00:03:39,470 --> 00:03:41,660 प्रभावी ढंग से एक फोन है कहा जाता है एक समारोह के लिए 80 00:03:41,660 --> 00:03:45,110 खुद को हम, जो रीसेट क्रम में बाद में लागू 81 00:03:45,110 --> 00:03:47,470 हमारे वैश्विक राज्यों में से कुछ को मुक्त करने के लिए। 82 00:03:47,470 --> 00:03:50,480 उसके बाद की एक पंक्ति है कोड है कि सशर्त 83 00:03:50,480 --> 00:03:52,576 वापसी जाँच कर रहा है जुड़ा के लिए मूल्य। 84 00:03:52,576 --> 00:03:55,700 एक विधेय की तरह अब जुड़ा हुआ लग रहा है, सही है या गलत है कि रिटर्न कुछ। 85 00:03:55,700 --> 00:03:58,040 और यह करता है, लेकिन वहाँ है कनेक्टेड में कुछ खास 86 00:03:58,040 --> 00:03:59,960 उस में यह एक अवरुद्ध फोन है। 87 00:03:59,960 --> 00:04:03,180 यह वहाँ बैठने के लिए और इंतजार करना होगा एक उपयोगकर्ता के ब्राउज़र तक 88 00:04:03,180 --> 00:04:05,860 इस वेब से कनेक्ट करने की कोशिश करता है सर्वर और उसके बाद ही यह होगा 89 00:04:05,860 --> 00:04:10,160 हम आगे बढ़ना है, ताकि सही है या गलत लौटने अगर यह बयान के अंदर करने के लिए। 90 00:04:10,160 --> 00:04:13,870 >> एक बार वहाँ, एक करने के लिए इस समारोह को नोटिस हम लिखा था जिसमें पार्स बुलाया समारोह, 91 00:04:13,870 --> 00:04:17,230 जो सब, ओकटेट के सभी डेसिमल एक ब्राउज़र से आ रही बाइट्स की 92 00:04:17,230 --> 00:04:21,010 सर्वर के लिए, इतना है कि हम हाथ कर सकते हैं एक करने के लिए तुम वापस अंततः एक मूल्य 93 00:04:21,010 --> 00:04:24,420 उन वैश्विक चर की है कि दुकानों बस में बाइट्स के सभी 94 00:04:24,420 --> 00:04:26,630 इस बात का हेडर अनुरोध है, न कि शरीर 95 00:04:26,630 --> 00:04:28,920 यह करने के लिए वास्तव में एक शरीर अगर वहाँ थे। 96 00:04:28,920 --> 00:04:32,980 >> अब हम शुरू करने के लिए नीचे से नीचे निकालने के लिए उन हेडर पार्स 97 00:04:32,980 --> 00:04:35,490 जानकारी का एक सबसेट हम के बारे में परवाह है। 98 00:04:35,490 --> 00:04:37,740 विशेष रूप से, प्रति विनिर्देश, हम पहले 99 00:04:37,740 --> 00:04:40,580 है, जो लाइन का अनुरोध करना चाहता था सिर्फ इतना है कि बहुत पहली पंक्ति है कि 100 00:04:40,580 --> 00:04:45,710 उम्मीद है कि पाने के लिए की तरह कुछ कहना है स्लैश या कुछ पथ और फिर HTTP 1.1। 101 00:04:45,710 --> 00:04:48,150 हम इस रूपक का उपयोग कर रहे हैं एक टेबल में एक सुई की 102 00:04:48,150 --> 00:04:50,370 विशेष के लिए देखने के लिए वर्ण या पतों। 103 00:04:50,370 --> 00:04:53,120 और वास्तव में, वहाँ की एक संख्या है हमारे वितरण कोड में कार्य करता है 104 00:04:53,120 --> 00:04:56,930 आपको लगता है कि, भी, आपके लिए मददगार साबित हो सकता है विशेष मूल्यों के लिए देख रहे हैं। 105 00:04:56,930 --> 00:05:00,630 >> अंत में, हम इन बाइट्स की प्रतिलिपि एक चर बुलाया लाइन में, 106 00:05:00,630 --> 00:05:03,510 जो भी है, हम है, नोटिस ढेर पर आवंटित 107 00:05:03,510 --> 00:05:05,890 एक गतिशील आकार सरणी के माध्यम से। 108 00:05:05,890 --> 00:05:08,350 और हम जानबूझ कर कोशिश कर रहे हैं malloc के फोन से बचने के लिए 109 00:05:08,350 --> 00:05:11,100 फिर, क्योंकि क्योंकि नियंत्रण ग की जा रही है 110 00:05:11,100 --> 00:05:14,630 इस कार्यक्रम के एक संभावित सुविधा है, हम अचानक इस कोड है नहीं करना चाहते हैं 111 00:05:14,630 --> 00:05:17,479 उपयोगकर्ता मार से बाधित नियंत्रण सी, जिनमें से परिणाम 112 00:05:17,479 --> 00:05:20,270 मैं एक मौका नहीं हो सकता है मुक्त कुछ के लिए मैं malloced दिया है। 113 00:05:20,270 --> 00:05:23,660 तो मुझे लगता है के रूप में ज्यादा उपयोग करने के लिए कोशिश कर रहा हूँ स्टैक की मैं यहाँ कर सकते है। 114 00:05:23,660 --> 00:05:26,040 >> अगला डॉस के लिए की एक पूरी गुच्छा, ऊपर। 115 00:05:26,040 --> 00:05:28,930 विनिर्देश व्याख्या करेंगे यहाँ उम्मीद है कि वास्तव में क्या पर, 116 00:05:28,930 --> 00:05:31,800 लेकिन टिप्पणियों तुम्हें दे क्या का एक संकेत के आगे झूठ। 117 00:05:31,800 --> 00:05:33,830 आप करने के लिए पहली जरूरत अनुरोध लाइन को मान्य 118 00:05:33,830 --> 00:05:37,760 और ऐसा लग रहा है कि यह सुनिश्चित कर लें विनिर्देशों, तो बात करने के लिए, व्याकरण 119 00:05:37,760 --> 00:05:38,541 यह चाहिए कहते हैं। 120 00:05:38,541 --> 00:05:41,290 तुम तो कुछ निकालने की जरूरत बाहर सामान, क्वेरी बुलाया 121 00:05:41,290 --> 00:05:44,200 एक प्रश्न चिह्न के बाद, जैसे हम अपने गूगल उदाहरण के साथ देखा 122 00:05:44,200 --> 00:05:46,320 एक HD पैरामीटर में पारित में। 123 00:05:46,320 --> 00:05:49,050 हम तो एक साथ जुटना वेब सर्वर की जड़ 124 00:05:49,050 --> 00:05:52,520 में है कि पथ के साथ अनुरोध है कि पहली पंक्ति 125 00:05:52,520 --> 00:05:56,010 और का पूरा पथ फार्म फ़ाइल के लिए हम देखना चाहता हूँ। 126 00:05:56,010 --> 00:06:00,300 >> इसके बाद, हम सुनिश्चित करने के लिए जा रहे हैं उस फ़ाइल मौजूद है और पठनीय है। 127 00:06:00,300 --> 00:06:05,100 और फिर हम निकालने के लिए जा रहे हैं अपने फाइल एक्सटेंशन, .html या .php, 128 00:06:05,100 --> 00:06:09,920 या कम है कि कुछ इस तरह के विस्तार अनुरोध किया स्ट्रिंग के बहुत अंत। 129 00:06:09,920 --> 00:06:11,940 अगले एक पूरी है कोड का गुच्छा हम लिखा 130 00:06:11,940 --> 00:06:15,800 वास्तव में पीएचपी उत्पन्न करने के लिए आप के लिए सामग्री उत्पन्न। 131 00:06:15,800 --> 00:06:18,010 संक्षेप में, इस कोड नाम पर ले जाता है 132 00:06:18,010 --> 00:06:20,250 फ़ाइल का आप PHP व्याख्या करना चाहते हैं। 133 00:06:20,250 --> 00:06:24,630 हम बुलाया कुछ ने इसे पारित पीएचपी का दुभाषिया में एक पाइप। 134 00:06:24,630 --> 00:06:28,060 यद्यपि के रूप में प्रतिक्रिया वापस जाओ प्रतिक्रिया एक ही फाइल थे। 135 00:06:28,060 --> 00:06:32,110 और फिर हम उस फ़ाइल को खत्म हो चुका है पुनरावृति एक बफर में उन सब को खींच बाइट्स, 136 00:06:32,110 --> 00:06:34,180 हम अंततः यह कर सकते हैं कि इतना उन्हें बाहर प्रिंट। 137 00:06:34,180 --> 00:06:37,230 >> इनमें से वास्तव में, सभी dprintf करने के लिए यहां कॉल 138 00:06:37,230 --> 00:06:40,110 हमें कुछ प्रिंट करने देता है एक फ़ाइल विवरणक कहा जाता है, जो 139 00:06:40,110 --> 00:06:42,350 सिर्फ एक पूर्णांक है कि एक फ़ाइल का प्रतिनिधित्व करता है। 140 00:06:42,350 --> 00:06:45,360 आत्मा में बहुत समान है लेकिन एक फ़ाइल से मौलिक रूप से अलग 141 00:06:45,360 --> 00:06:46,620 स्टार सूचक। 142 00:06:46,620 --> 00:06:50,260 आप जैसे वाक्य रचना का उपयोग कर सकते सूचना कैसे printf यहाँ मैं गतिशील कर सकते हैं कि इतना 143 00:06:50,260 --> 00:06:54,000 लंबाई की तरह कुछ डालने एक HTTP हेडर के मूल्य के लिए 144 00:06:54,000 --> 00:06:55,270 सामग्री लंबाई कहा जाता है। 145 00:06:55,270 --> 00:06:57,990 और अंत में मैं इस्तेमाल किया समारोह वास्तव में लिखने के लिए सही 146 00:06:57,990 --> 00:07:00,040 अनुरोध करने के लिए शरीर। 147 00:07:00,040 --> 00:07:03,750 >> दुर्भाग्य से, हम केवल कार्यान्वित गतिशील रूप के लिए समर्थन 148 00:07:03,750 --> 00:07:05,350 उत्पन्न पीएचपी फ़ाइलें। 149 00:07:05,350 --> 00:07:08,520 हम के लिए समर्थन को लागू नहीं किया था स्थिर gifs तरह फ़ाइलों, और JPEGs, 150 00:07:08,520 --> 00:07:10,660 और सीएसएस और HTML फ़ाइलों। 151 00:07:10,660 --> 00:07:14,450 यही कारण है, दुर्भाग्य से, आप के लिए छोड़ दिया जाता है ग्राहक उद्देश्य के लिए प्रतिक्रिया करने के लिए 152 00:07:14,450 --> 00:07:15,090 ऐसा करने के लिए। 153 00:07:15,090 --> 00:07:20,050 वहाँ में तो आप यह है कि वहाँ मिल जाएगा ऐसा नहीं है कि ब्लॉक के भीतर बहुत प्रेरणा, 154 00:07:20,050 --> 00:07:23,520 लेकिन कैसे पर एक छोटे से अधिक आप अगर हम, PHP कोड की व्याख्या के बारे में चला गया 155 00:07:23,520 --> 00:07:25,520 कार्यों आप इस्तेमाल करेंगे एक छोटे से अलग कर रहे हैं। 156 00:07:25,520 --> 00:07:27,561 >> वास्तव में, आप उधार ले सकते हैं कार्यशीलता के कुछ 157 00:07:27,561 --> 00:07:29,620 शायद फोरेंसिक से समस्या सेट, क्योंकि 158 00:07:29,620 --> 00:07:32,860 दिन के अंत में सब आप की जरूरत है क्या आप जानते हैं एक बार यहाँ क्या है खुले क्या फ़ाइल 159 00:07:32,860 --> 00:07:35,690 क्या आप जानते हैं और एक बार यह तथाकथित है माइम प्रकार या सामग्री प्रकार, 160 00:07:35,690 --> 00:07:39,040 आप उन बाइट्स में पढ़ने की जरूरत है और किसी तरह बाहर उन्हें वापस थूक। 161 00:07:39,040 --> 00:07:41,190 >> इस की और अब एक दौरे फ़ाइल के अन्य कार्य करता है। 162 00:07:41,190 --> 00:07:43,820 पहले से जुड़ा हुआ है ऊपर, जो सिर्फ सच रिटर्न 163 00:07:43,820 --> 00:07:47,350 जब यह अंततः एक सुनता एक उपयोगकर्ता से कनेक्शन। 164 00:07:47,350 --> 00:07:48,786 अगले त्रुटि है। 165 00:07:48,786 --> 00:07:52,296 त्रुटि, इस बीच, के रूप में एक समारोह हम विभिन्न 400 के सभी संभाल करने के लिए लिखा 166 00:07:52,296 --> 00:07:55,360 और 500 HTTP स्थिति तुम चाहते हो सकता है कि कोड 167 00:07:55,360 --> 00:07:58,500 उपयोगकर्ता को वापस भेजने के लिए, एक मानक संदेश के साथ। 168 00:07:58,500 --> 00:08:01,950 >> अगला अप लोड है, एक विशेष रूप से जिसका उद्देश्य जीवन में भावपूर्ण समारोह, 169 00:08:01,950 --> 00:08:06,920 एक फ़ाइल स्टार से पढ़ने के लिए है सूचक एक वैश्विक बफर में एक फाइल की सामग्री 170 00:08:06,920 --> 00:08:09,000 हम विश्व स्तर पर घोषित कि [ऊपर? मेन। ?] 171 00:08:09,000 --> 00:08:12,649 इस प्रकार हम इस वजह से थोड़ा जटिल है फ़ाइल से बाइट्स पढ़ने के लिए है 172 00:08:12,649 --> 00:08:14,690 लेकिन प्रत्येक यात्रा पर जांच हम पहले से ही है कि क्या 173 00:08:14,690 --> 00:08:17,600 फ़ाइल के अंत या मारा कुछ और गलत हो गया है। 174 00:08:17,600 --> 00:08:21,210 और हम सुनिश्चित करने के लिए realloc का उपयोग जो कुछ भी हम प्रयोग कर रहे बफर बढ़ रहा है 175 00:08:21,210 --> 00:08:24,440 और बढ़ रही है और हमेशा बढ़ रही है और बाइट्स की संख्या के आगे रहने 176 00:08:24,440 --> 00:08:25,675 हम वहाँ में फिट करने की आवश्यकता है। 177 00:08:25,675 --> 00:08:27,550 हैंडलर, इस बीच, है हो जाता है कि समारोह 178 00:08:27,550 --> 00:08:30,630 होने के रास्ते से बुलाया एक संकेत के रूप में नियंत्रण ग पंजीकृत 179 00:08:30,630 --> 00:08:32,140 हम अवरोधन करने के लिए चाहते हैं। 180 00:08:32,140 --> 00:08:34,070 हैंडलर में यहाँ नोटिस यह है कि अंततः 181 00:08:34,070 --> 00:08:36,780 कॉल, बंद करो जो निश्चित रूप से वेब सर्वर बंद हो जाता है। 182 00:08:36,780 --> 00:08:39,750 और दुर्भाग्य से, देखने का लागू नहीं है। 183 00:08:39,750 --> 00:08:41,940 आत्मा में, यह एक है काफी सरल कार्य करते हैं। 184 00:08:41,940 --> 00:08:44,900 एक फाइल एक्सटेंशन को देखते हुए यह जरूरत यह माइम तथाकथित की वापसी के लिए 185 00:08:44,900 --> 00:08:46,320 प्रकार या सामग्री प्रकार। 186 00:08:46,320 --> 00:08:49,260 और हम विनिर्देश में निर्दिष्ट कि मानचित्रण होना चाहिए क्या। 187 00:08:49,260 --> 00:08:52,330 लेकिन आप अनुवाद करने की जरूरत है अंततः सी कोड के लिए यह। 188 00:08:52,330 --> 00:08:56,490 >> अगला ऊपर हमारी इसी तरह भावपूर्ण समारोह है जीवन में जिसका उद्देश्य पार्स बुलाया 189 00:08:56,490 --> 00:08:59,350 नहीं एक फ़ाइल से पढ़ने के लिए है, लेकिन एक नेटवर्क कनेक्शन से। 190 00:08:59,350 --> 00:09:03,510 विशेष रूप से, पढ़ने और पार्स एक ब्राउज़र से आ रहा है कि HTTP अनुरोध 191 00:09:03,510 --> 00:09:05,940 इतना है कि सर्वर के लिए अंततः हम पार्स कर सकते हैं 192 00:09:05,940 --> 00:09:09,530 अनुरोध में सिर्फ हेडर पर रेखा और आप के लिए उन पर लौटने 193 00:09:09,530 --> 00:09:12,720 एक वैश्विक बफर के माध्यम से कि हम [ऊपर घोषित? मेन। ?] 194 00:09:12,720 --> 00:09:14,880 >> इस बीच, एक है, रीसेट हम परिभाषित है कि समारोह 195 00:09:14,880 --> 00:09:18,730 कि iteratively अंदर बुलाया जाता है मुख्य हर बार की आप के बारे में कर रहे हैं 196 00:09:18,730 --> 00:09:20,799 सुन शुरू करने के लिए तैयार एक नए कनेक्शन के लिए 197 00:09:20,799 --> 00:09:22,840 हम हमेशा पता है कि इतने हमारे चर के राज्य 198 00:09:22,840 --> 00:09:24,870 और इतना है कि हम भी है किसी भी स्मृति मुक्त कर दिया है कि 199 00:09:24,870 --> 00:09:28,070 के लिए आवंटित किया गया है हो सकता है पिछले एक नेटवर्क कनेक्शन। 200 00:09:28,070 --> 00:09:30,060 अगला ऊपर है शुरू, हम ने लिखा है कि समारोह 201 00:09:30,060 --> 00:09:31,920 कि एक पूरे होता है नेटवर्किंग कोड का बहुत कुछ 202 00:09:31,920 --> 00:09:34,420 कि अंततः वेब सर्वर शुरू होता है। 203 00:09:34,420 --> 00:09:36,680 >> पिछले समारोह है कहा जाता है बंद करो, जो 204 00:09:36,680 --> 00:09:38,770 ठीक है कि नहीं करता है, यह वेब सर्वर बंद हो जाता है। 205 00:09:38,770 --> 00:09:42,270 लेकिन पहले यह किसी भी स्मृति को मुक्त कर देते कि अभी भी आवंटित कर दिया गया है। 206 00:09:42,270 --> 00:09:45,850 लेकिन यह अंततः बाहर निकलने के कॉल यहां तक ​​कि नियंत्रण लौटने के बिना 207 00:09:45,850 --> 00:09:47,480 हमारा मुख्य कार्य करने के लिए। 208 00:09:47,480 --> 00:09:49,480 अंत में, में से एक सबसे महत्वपूर्ण तकनीक 209 00:09:49,480 --> 00:09:52,680 को लागू करने के लिए जब इस वेब सर्वर है परीक्षण और त्रुटि के एक सा हो जा रहा है, 210 00:09:52,680 --> 00:09:55,886 एक ब्राउज़र विंडो खोलने होने पर सही और एक टर्मिनल विंडो पर 211 00:09:55,886 --> 00:09:57,760 छोड़ दिया, सर्वर कंसोल खिड़की, इतना है कि आप 212 00:09:57,760 --> 00:10:00,420 कर रहे हैं कि संदेशों को देख सकते हैं स्क्रीन पर प्रदर्शित किया जा रहा है। 213 00:10:00,420 --> 00:10:04,170 >> लेकिन बेहतर अभी भी एक तिहाई होगा खिड़की, एक दूसरे टर्मिनल विंडो, 214 00:10:04,170 --> 00:10:07,135 जिसमें आप टेलनेट, उपयोग का उपयोग जिसके लिए कल्पना में निर्धारित है। 215 00:10:07,135 --> 00:10:09,640 और Telnet सिर्फ एक बहुत है सरल नेटवर्क कार्यक्रम 216 00:10:09,640 --> 00:10:12,660 कि आप का नाटक करने की सुविधा देता है एक खिड़की में एक ब्राउज़र हो 217 00:10:12,660 --> 00:10:14,540 अन्य खिड़की से बात करते हुए। 218 00:10:14,540 --> 00:10:16,830 जैसा कि आप देख सकते हैं इस तरह बिल्कुल शाब्दिक आदेशों 219 00:10:16,830 --> 00:10:18,700 वापस आ रहे हैं कि सर्वर से ग्राहक के लिए 220 00:10:18,700 --> 00:10:20,810 poking के लिए बिना क्रोम डेवलपर के आसपास 221 00:10:20,810 --> 00:10:24,010 एक अन्यथा में उपकरणों clunkier इंटरफेस। 222 00:10:24,010 --> 00:10:29,099