1 00:00:00,000 --> 00:00:09,647 2 00:00:09,647 --> 00:00:11,730 დინამიკები: ახლა მოდით dive შევიდა განაწილების კოდი 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 >> ასე რომ, აქ მიმართ ყველაზე ფაილი არის bunch 11 00:00:27,560 --> 00:00:30,020 მხატვრული შეამოწმოთ მაკრო მოთხოვნებს. 12 00:00:30,020 --> 00:00:33,570 ახლა ეს არის მხოლოდ თვისება c, რომლის დროსაც შესაბამისად bunch of man გვერდები 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 მთელი bunch of ლიმიტები განაცხადა. 19 00:00:50,550 --> 00:00:53,370 >> და ჩვენ ნასესხები ამ საწყისი პოპულარული სერვერზე მოუწოდა Apache. 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 სხვადასხვა კონტექსტში for HTTP მოთხოვნის რომ ბრაუზერში დაშვებული უნდა გამომიგზავნოთ. 23 00:01:01,930 --> 00:01:04,310 შემდეგი, ჩვენ განსაზღვრავს ოქტეტი. 24 00:01:04,310 --> 00:01:07,790 ახლა octet არის უბრალოდ ლამაზი გზა ამბობდა byte, რვა ბიტი. 25 00:01:07,790 --> 00:01:10,720 თურმე yesteryear byte არ იყო აუცილებელი, რვა ბიტი, 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 >> აქ მე მითითებული, რომ ოქტეტი იქნება იყოს 512, ასე რომ ჰგავს ექსპერტიზის 30 00:01:21,840 --> 00:01:24,170 როდესაც ვკითხულობთ რამოდენიმე ბაიტი დროს, აქაც, 31 00:01:24,170 --> 00:01:27,390 ჩვენ ვაპირებთ, რომ წაიკითხოთ bunch of ოქტეტი დროს. 32 00:01:27,390 --> 00:01:28,922 შემდეგი მთელი bunch of header ფაილი. 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 იყოს char. 39 00:01:41,470 --> 00:01:44,040 და ვნახავთ, მოგვიანებით, რომ ეს გამოყენებული კოდი. 40 00:01:44,040 --> 00:01:45,670 და ჩვენ განაცხადა მთელი bunch of პროტოტიპები, 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 რომლებიც, ფაქტობრივად მთელი bunch გლობალური ცვლადები 45 00:01:54,520 --> 00:02:00,430 ზედა ფაილი, root, 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 C და დახურეს სერვერზე gracefully. 51 00:02:15,080 --> 00:02:18,240 და იმისათვის, რომ გავაკეთოთ gracefully და რეალურად თავისუფალი მეხსიერება, 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 რომელიც შედის უმაღლესი up. 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 არის მთელი bunch ფუნქციები არ წერია 61 00:02:43,350 --> 00:02:48,730 ჩვენს მიერ, არამედ ავტორები Linux და სხვა სისტემების რეალურად მითითებული 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 >> ახლა ქვემოთ დაინახავთ new ტექნიკა ალბათ გამოყენებით 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 ან dash p, ან dash h დახმარების მისაღებად. 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 თუ და როდესაც გესმით Control C from მომხმარებლის კლავიატურის, წავიდეთ წინ და დაარქვით 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 რომელიც parses ყველა ოქტეტი, ყველა ბაიტი მოდის ბრაუზერი 92 00:04:17,230 --> 00:04:21,010 სერვერზე, ასე რომ ჩვენ შეგვიძლია გადასცემს თქვენ უკან საბოლოოდ მნიშვნელობა ერთი 93 00:04:21,010 --> 00:04:24,420 იმ გლობალური ცვლადები, მაღაზიები ყველა bytes მხოლოდ 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 ჩვენ ამ მეტაფორის გამოყენების ნემსი წელს haystack 102 00:04:48,150 --> 00:04:50,370 ვეძებთ კონკრეტული chars და მისამართები. 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 >> საბოლოო ჯამში, ჩვენ კოპირება ამ bytes ცვლადში ხაზი, 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 შეუშალა შესახებ hitting კონტროლის 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 >> შემდეგი up, მთელი bunch of to 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 in გავლის HD პარამეტრი. 123 00:05:46,320 --> 00:05:49,050 ჩვენ მაშინ concatenate ერთად ძირეული სერვერზე 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 შემდეგი up არის მთელი bunch of კოდი ჩვენ წერდა 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 და მაშინ ჩვენ iterate მეტი რომ ფაილი bytes, უბიძგებენ მათ ყველა ერთ ბუფერული 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 საშუალებას გვაძლევს ბეჭდვა რაღაც მოუწოდა ფაილი descriptor, რომელიც 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 header 144 00:06:54,000 --> 00:06:55,270 მოუწოდა Content-Length. 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 და jpegs, 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 მაგრამ თუ ცოტა მაღალია up, როგორ წავედით შესახებ წერით 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 და კიდევ თქვენ იცით, რომ ის ე.წ. MIME ტიპის ან content type, 160 00:07:35,690 --> 00:07:39,040 თქვენ უნდა წაიკითხოთ იმ bytes და რატომღაც Spit მათ უკან. 161 00:07:39,040 --> 00:07:41,190 >> და ახლა ტური ამ ფაილის სხვა ფუნქციები. 162 00:07:41,190 --> 00:07:43,820 Up პირველი უკავშირდება, რომელიც უბრალოდ ბრუნდება ნამდვილი 163 00:07:43,820 --> 00:07:47,350 როდესაც საბოლოოდ ესმის კავშირი საწყისი მომხმარებელს. 164 00:07:47,350 --> 00:07:48,786 შემდეგი up არის შეცდომა. 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 >> შემდეგი up დატვირთვის, განსაკუთრებით meaty ფუნქცია, რომლის მიზანი ცხოვრებაში 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 ეს ცოტა რთული იმიტომ, რომ ჩვენ უნდა წაიკითხოთ bytes ფაილი 172 00:08:12,649 --> 00:08:14,690 მაგრამ სანახავად ყოველ iteration თუ არა ჩვენ უკვე 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 მოუწოდა გზით მქონე რეგისტრირებული Control 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 მოცემული ფაილის გაფართოება, მას სჭირდება დაბრუნებას ის ე.წ. MIME 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 >> შემდეგი up არის ჩვენი მსგავსად meaty ფუნქცია მოუწოდა გარჩევის, რომლის მიზანი ცხოვრებაში 189 00:08:56,490 --> 00:08:59,350 წაკითხვის, არ ფაილი, მაგრამ ქსელის კავშირი. 190 00:08:59,350 --> 00:09:03,510 კერძოდ, კითხულობს და parsing 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 შემდეგი up არის დაიწყოს, ფუნქცია, რომელიც ჩვენ წერდა 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 >> ბოლო up ფუნქცია მოუწოდა გაჩერება, რომელიც 204 00:09:36,680 --> 00:09:38,770 ზუსტად რომ, ის აჩერებს სერვერზე. 205 00:09:38,770 --> 00:09:42,270 მაგრამ პირველი ის ათავისუფლებს up ნებისმიერი მეხსიერების რომ ჯერ კიდევ იქნა გამოყოფილი. 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 მარცხენა, სერვერები console ფანჯარაში, ასე რომ თქვენ 212 00:09:57,760 --> 00:10:00,420 ხედავთ შეტყობინებები, რომლებიც მიმდინარეობს ეკრანზე. 213 00:10:00,420 --> 00:10:04,170 >> მაგრამ უკეთესი მაინც იქნება მესამე window, მეორე ტერმინალის ფანჯარა, 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 რომელიც საშუალებას გაძლევთ პრეტენზია იყოს ბრაუზერში ერთ window 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 გარეშე მოეშვები გარშემო chrome დეველოპერი 221 00:10:20,810 --> 00:10:24,010 ინსტრუმენტები სხვაგვარად clunkier ინტერფეისი. 222 00:10:24,010 --> 00:10:29,099