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 ตอนนี้เป็นเพียงคุณลักษณะของ c โดย ตามพวงของหน้าคน 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 ตอนนี้ลงมาด้านล่างใน สาย 15 ผ่าน 17 เรา 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 ต่อไปเรากำหนด octets 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 ดังนั้น octet อยู่เสมอแปดบิต 27 00:01:12,339 --> 00:01:14,880 ดังนั้นในกรณีนี้เราได้นำมาใช้ สิ่งที่พบได้บ่อยในเครือข่าย 28 00:01:14,880 --> 00:01:17,410 โลกของการเรียกแปดไบต์ octet 29 00:01:17,410 --> 00:01:21,840 >> นี่ฉันได้ระบุว่าจะ octets เป็น 512 เพื่อให้เหมือนในนิติ 30 00:01:21,840 --> 00:01:24,170 เมื่อเราอ่านพวงของ ไบต์ในเวลาที่นี่เกินไป 31 00:01:24,170 --> 00:01:27,390 เรากำลังจะอ่าน พวงของ octets ในเวลา 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 เราได้ประกาศ octet ที่จะเป็นถ่าน 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 ที่ด้านบนของไฟล์ราก CFD, 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 หรือขีด p, หรือขีดชั่วโมงที่จะได้รับความช่วยเหลือ 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 ถ้าและเมื่อคุณได้ยินควบคุม C จาก แป้นพิมพ์ของผู้ใช้ไปข้างหน้าและเรียก 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 ซึ่งจะแยกวิเคราะห์ทุก octets ทั้งหมด ไบต์ที่มาจากเบราว์เซอร์ 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 เพราะอีกครั้งเพราะ ควบคุม C เป็น 110 00:05:11,100 --> 00:05:14,630 คุณลักษณะที่มีศักยภาพของโปรแกรมนี้เรา ไม่ต้องการที่จะมีรหัสนี้อย่างกระทันหัน 111 00:05:14,630 --> 00:05:17,479 ขัดจังหวะโดยการกดปุ่มของผู้ใช้ ควบคุม C, ผลจากการที่ 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 >> ถัดไปขึ้นทั้งกลุ่มจะ dos 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 หลังเครื่องหมายคำถามเช่น เราเห็นตัวอย่างของ Google 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 ที่จริงการสร้าง PHP สร้างเนื้อหาสำหรับคุณ 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 เราผ่านมันด้วยสิ่งที่เรียกว่า ท่อเป็นล่ามของ PHP 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 สร้างไฟล์ PHP 149 00:07:05,350 --> 00:07:08,520 เราไม่ได้ดำเนินการสนับสนุน ไฟล์คงเหมือน GIFs, และ JPEG 150 00:07:08,520 --> 00:07:10,660 และ CSS และไฟล์ 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 Handler ขณะที่เป็น ฟังก์ชั่นที่ได้รับ 178 00:08:27,550 --> 00:08:30,630 เรียกว่าโดยวิธีการของการมี ลงทะเบียน C ควบคุมเป็นสัญญาณ 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 แต่คุณจำเป็นต้องแปล ในท้ายที่สุดมันจะรหัส C 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 ที่ได้รับการเรียกซ้ำภายใน ของหลักเวลาคุณเกี่ยวกับทุก 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 มีเปิดหน้าต่างเบราว์เซอร์อย่างใดอย่างหนึ่ง ที่ด้านขวาและหน้าต่าง terminal ที่ 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 >> แต่ดีกว่ายังคงเป็นหนึ่งในสาม หน้าต่าง, หน้าต่าง terminal ที่สอง 214 00:10:04,170 --> 00:10:07,135 ในการที่คุณใช้ Telnet, การใช้งาน ที่มีการกำหนดไว้ในสเปค 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 โดยไม่ต้องจิ้ม รอบการพัฒนาของโครเมี่ยม 221 00:10:20,810 --> 00:10:24,010 เครื่องมือในการเป็นอย่างอื่น อินเตอร์เฟซ clunkier 222 00:10:24,010 --> 00:10:29,099