স্পিকার: এখন দিন এর ডুব ডিস্ট্রিবিউশনের মধ্যে কোড
এবং কনটেক্সট কটাক্ষপাত করা যা কোড আপনি লিখুন
অপারেটিং করা যাচ্ছে.
দিন শেষে, আপনি বাস্তবায়ন করতে যাচ্ছেন
ওয়েব সার্ভার সম্পূর্ণতা.
কিন্তু আমরা প্রদান করে কঙ্কাল সঙ্গে আপনি
কিছু বৈশিষ্ট্য আছে যে কোড, বিশেষ করে নেটওয়ার্কিং এর সাথে সম্পর্কিত.
এর কটাক্ষপাত করা যাক.
>> এখানে উপরের দিকে তাই ফাইল একটি গুচ্ছ
বৈশিষ্ট্য ম্যাক্রো প্রয়োজনীয়তা পরীক্ষা.
এখন এই গ, যদ্দ্বারা শুধু একটি বৈশিষ্ট্য মানুষ পৃষ্ঠার একটি গুচ্ছ অনুযায়ী
আপনি কিছু সংজ্ঞায়িত আছে এই ধ্রুবক সত্য হতে পারে
অথবা, যাতে এমনকি নির্দিষ্ট সংখ্যা হতে আপনি নির্দিষ্ট ফাংশন এক্সেস আছে.
অন্যথায় তারা অঘোষিত করা হবে এবং আপনি অ্যাক্সেস থাকবে না.
তাই আমি উপায় দ্বারা এই কাজ করেছি এর man পৃষ্ঠা পড়া.
এখন নিচে নিচে, এ 17 মাধ্যমে লাইন 15, আমরা
ঘোষণা সীমা আভা আছে.
>> এবং আমরা একটি থেকে এই ধার করেছি এ্যাপাচি বলা জনপ্রিয় ওয়েব সার্ভার.
এবং এই মাত্র হয় যাচ্ছি সংখ্যা
মোট সংখ্যা ক্যাপ বাইট যে অনুমতি দেওয়া হয়
HTTP অনুরোধের জন্য বিভিন্ন প্রেক্ষিতে যে একটি ব্রাউজার পাঠাতে অনুমতি দেওয়া হয়.
এর পরে, আমরা অক্টেট নির্ধারণ করুন.
এখন একটি অষ্টক মাত্র একটি অভিনব উপায় একটি বাইট, আট বিট বা বলার অপেক্ষা রাখে না.
বিগতবত্সর একটি বাইট মধ্যে দেখা যাচ্ছে অগত্যা আট বিট ছিল,
তাই অষ্টক সবসময় আট বিট.
তাই এই ক্ষেত্রে আমরা গ্রহণ করেছি কি নেটওয়ার্কিং সাধারণ
আট বাইট একটি অষ্টক আহ্বান বিশ্বের.
>> এখানে আমি অক্টেট করবে না উল্লেখ করেছি তাই যে অনেক ফরেনসিক মত, 512 হতে
আমরা একটি গুচ্ছ পড়া যখন একটি সময়ে বাইট, এখানে খুব,
আমরা একটি পড়তে যাচ্ছেন একটি সময়ে অক্টেট গুচ্ছ.
হেডার ফাইল আভা পরবর্তী.
আমি কিভাবে এই অন্তর্ভুক্ত করতে জানেন?
ওয়েল আমি সহজভাবে মানুষের পড়া ফাংশন একটি সংখ্যা জন্য পেজ
আমরা এই ডিস্ট্রিবিউশনের মধ্যে ব্যবহার করব যে কোড এবং বেশী অন্তর্ভুক্ত
আমি নির্দেশ ছিল.
>> এবং এখন আমরা একটি ডাটা টাইপ আছে.
আমরা একটি গৃহস্থালির কাজ করা একটি অষ্টক ঘোষণা করেছি.
এবং আমরা যে যে পরে দেখতে পাবেন কোড ব্যবহৃত.
এবং আমরা ঘোষণা করেছি একটি এগুলির নমুনা আভা,
এবং আমরা মাধ্যমে দ্রুত হেটে যাব যারা ফাংশন প্রতিটি.
সর্বশেষ, এবং সম্ভবত সবচেয়ে মধ্যে রাখা গুরুত্বপূর্ণ
এই বিন্দু এ মন গল্প, যে আছে
আসলে, একটি সম্পূর্ণ হয় গ্লোবাল ভেরিয়েবল গুচ্ছ
ফাইল শীর্ষে, root পরিচয়ে, সিএফডি, SFD, অনুরোধ, ফাইল এবং শরীর.
>> এখন সাধারণত, তাই অনেক আন্তর্জাতিক ব্যবহার করে ভেরিয়েবল, বা এ সব গ্লোবাল ভেরিয়েবল,
ফিরে অনুশীলন হয় না.
কিন্তু এটা আমরা একটি ব্যবহার করছেন দেখা যাচ্ছে কৌশল বলা সংকেত হ্যান্ডলিং পরে
করতে পারবেন যা কোড, মধ্যে ব্যবহারকারী কিছু হিট সনাক্ত
এবার CTRL সি এবং শাট ডাউন মত gracefully সার্ভার.
এবং যাতে gracefully যে কি এবং আসলে মেমরি মুক্ত আপ,
আমরা এক্সেস করতে হবে এই গ্লোবাল ভেরিয়েবল.
>> এবং এখন এর প্রধান একটি কটাক্ষপাত করা যাক, যা এই প্রোগ্রামের সম্পূর্ণতা ড্রাইভ.
প্রথমত, এখানে উপরের আমরা একটি ত্রুটি সংখ্যা পরিবর্তনশীল আছে
যে না মনে হচ্ছে একটি টাইপ আছে, কিন্তু যে
এটা আসলে কারণ নামক একটি ফাইলের মধ্যে সংজ্ঞায়িত
ত্রুটি errno.h যা উচ্চতর অন্তর্ভুক্ত করা হয়.
আপনি আসলে errno কি মানুষ যদি এই জিনিস জন্য সংজ্ঞা দেখতে,
আপনি এই একটি দেখতে পাবেন বিশেষ বিশ্বব্যাপী পরিবর্তনশীল যে
আভা দ্বারা সেট করা হয় কর্ম লিখিত না
আমাদের, কিন্তু লিনাক্স এর লেখক দ্বারা এবং অন্যান্য সিস্টেমের আসলে সেট
যে পরিবর্তনশীল যখন কিছু একটি সংখ্যা গোলমাল আপনি বিশ্বব্যাপী করতে পারেন, যাতে
ভুল হয়ে যেতে পারে কি চিন্তা.
>> এখন নিচের নিচে যদি আপনি একটি নতুন দেখতে পাবেন কৌশল সম্ভবত, getopt ব্যবহার করে
পার্স কমান্ড সাহায্য করে একটি ফাংশন লাইন আর্গুমেন্ট আমরা না হয়, যাতে
figuring নাশক সময় বিরক্ত করতে হবে আউট 8080 ভালো কিছু বিশ্লেষণ করতে কিভাবে,
বা ড্যাশ পি, বা ড্যাশ জ সহায়তা পেতে পারেন.
getopt মূলত আমাদের জন্য যে আছে.
আরো জন্য man পৃষ্ঠা দেখুন.
>> এর পরে, আমরা ত্রুটির একটি বিট করতে নিশ্চিত করুন যে চেক
পোর্ট নম্বর মধ্যে যে বৈশিষ্ট নির্দিষ্ট সীমার.
এর পরে, আমরা একটি ফাংশন কল দেখতে যার সংজ্ঞা, আমরা করব শুরু
একটি মুহূর্ত তাকান, এবং তার নাম হিসাবে এই ওয়েব সার্ভার আরম্ভ করা হয়, প্রস্তাব দেওয়া হয়.
এখানে আমরা একটি ফাংশন কল আছে যা বলছেন বলা সংকেত,
যদি আপনার কাছ থেকে কন্ট্রোল সি শুনতে যখন ব্যবহারকারীর কীবোর্ড, এগিয়ে যান এবং কল
যাচ্ছে যে একটি ফাংশন বলা হ্যান্ডলার শেষ পর্যন্ত আপ জিনিস পরিষ্কার এবং বন্ধ
সার্ভার.
>> যে নীচে একটি উপস্থিত হতে পারে কি অসীম লুপ, প্রথম লাইন, যা
কার্যকরভাবে একটি কল নামক একটি ফাংশন
নিজেদেরকে আমরা যা রিসেট যাতে পরে বাস্তবায়ন
আমাদের আন্তর্জাতিক রাজ্যের কিছু মুক্ত করতে.
পরে একটি লাইন কোড যে শর্তসাপেক্ষে
ফিরে চেক করা হয় সংযুক্ত মান.
একটি বিধেয় মত এখন সংযুক্ত রূপ, সত্য বা মিথ্যা ফেরৎ যে কিছু.
এবং এটা আছে, কিন্তু আছে সংযুক্ত বিশেষ কিছু
যে এটি একটি ব্লক কল.
এটা সেখানে বসতে এবং অপেক্ষা করতে হবে একটি ব্যবহারকারী ব্রাউজারে পর্যন্ত
এই ওয়েব সাথে সংযোগ করার চেষ্টা করে সার্ভার এবং শুধুমাত্র তারপর এটা করবে না
আমরা এগিয়ে যেতে, যাতে সত্য বা মিথ্যা ফিরে এই বিবৃতি যদি এর ভিতর থেকে.
>> একবার সেখানে, একটি এই ফাংশন বিজ্ঞপ্তি আমরা লিখেছে যা পার্স ফাংশন বলা,
যা সব, অক্টেট সব পার্স একটি ব্রাউজার থেকে আসছে বাইট
সার্ভারে, যাতে আমরা হাতে করতে পারেন এক আপনি ফিরে শেষ পর্যন্ত একটি মান
যারা গ্লোবাল ভেরিয়েবল যে দোকানে শুধু বাইট সব
যে হেডার অনুরোধ, না শরীর
এটি আসলে একটি শরীর ছিল.
>> এখন আমরা শুরু নিচে নিচে নিষ্কর্ষ যারা হেডার বিশ্লেষণ
তথ্য একটি উপসেট আমরা যত্ন সম্পর্কে যে.
বিশেষ করে, প্রতি স্পেসিফিকেশন, আমরা প্রথম
যা, লাইন অনুরোধ করতে চেয়েছিলেন শুধু যে প্রথম লাইন যে
আশা পেতে মত কিছু বলছেন শোঁ শোঁ শব্দ বা কিছু পথ এবং তারপর HTTP- র 1.1.
আমরা এই রূপক ব্যবহার করছেন একটি খড়ের গাদা মধ্যে একটি সুই
বিশেষ সন্ধান অক্ষর বা ঠিকানা.
এবং প্রকৃতপক্ষে, একটি সংখ্যা আছে আমাদের বিতরণ কোড ফাংশন
আপনি যে, খুব, সাহায্যকারী হতে পারে বিশেষ মানের জন্য যখন খুঁজছেন.
>> পরিশেষে, আমরা এই বাইট কপি একটি পরিবর্তনশীল নামক লাইন মধ্যে,
যা খুব, আমরা করেছি, লক্ষ্য স্ট্যাকের বন্টন
একটি পরিবর্তনশীল মাপের অ্যারের দ্বারা.
এবং আমরা ইচ্ছাকৃতভাবে চেষ্টা করছেন malloc কলিং এড়ানোর জন্য
কারণ আবার, কারণ কন্ট্রোল সি হচ্ছে
এই প্রোগ্রামের একটি সম্ভাব্য বৈশিষ্ট্য, আমরা হঠাৎ এই কোড আছে না চান
ব্যবহারকারী আঘাত দ্বারা বাধাপ্রাপ্ত কন্ট্রোল সি, যার ফলে
আমি একটি সুযোগ নাও থাকতে পারে যে বিনামূল্যে জন্য কিছু আমি malloced করেছি.
তাই আমি যতটা ব্যবহার করার চেষ্টা করছি স্ট্যাকের আমি এখানে করতে পারেন.
>> পরবর্তী ডস আভা, আপ.
স্পেসিফিকেশন ব্যাখ্যা করা হবে এখানে বলে আশা করা ঠিক কি উপর,
কিন্তু মন্তব্য দিতে কি একটি ইঙ্গিতটি এগিয়ে ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ.
আপনি করতে হবে অনুরোধ লাইন যাচাই
এবং এটা দেখে মনে হচ্ছে যে নিশ্চিত করুন উল্লেখ, তাই কথা বলতে, ব্যাকরণ
এটি করা উচিত বলেছেন.
তারপর আপনি কিছু নিষ্কাশন করা প্রয়োজন আউট স্টাফ, প্রশ্নের সাথে বলা
একটি প্রশ্ন চিহ্ন পর, মত আমরা আমাদের Google উদাহরণ দিয়ে দেখেছি
একটি এইচডি পরামিতি মধ্যে ক্ষণস্থায়ী.
আমরা তখন একসাথে বন্ধ করা ওয়েব সার্ভারের রুট
যে এর পাথ যে অনুরোধ প্রথম লাইন
এবং সম্পূর্ণ পাথ গঠন ফাইল আমরা এর জন্য সন্ধান করতে চান.
>> তারপর, আমরা নিশ্চিত করতে যাচ্ছেন যে ফাইল বিদ্যমান এবং পাঠযোগ্য.
এবং তারপর আমরা নিষ্কাশন করতে যাচ্ছেন তার ফাইল এক্সটেনশন, এইচটিএমএল বা পিএইচপি,
অথবা যে কিছু যেমন এক্সটেনশন অনুরোধ স্ট্রিং এর খুব শেষ.
পরবর্তী পুরো কোড গুচ্ছ আমরা লিখেছেন
আসলে পিএইচপি উৎপন্ন আপনার জন্য কন্টেন্ট উত্পন্ন.
সংক্ষেপে, এই কোড নাম লাগে
ফাইলের আপনি পিএইচপি ব্যাখ্যা করতে চান.
আমরা কিছু বলা দ্বারা এটি পাস পিএইচপি এর দোভাষী মধ্যে একটি নল.
যেন প্রতিক্রিয়া ফিরে পেতে প্রতিক্রিয়া একটি ফাইল নিজেই ছিল.
এবং তারপর আমরা যে ফাইল এর উপর বারবার এক বাফার মধ্যে তাদের সব কাছে বাইট,
আমরা শেষ পর্যন্ত করতে পারেন, যাতে তাদের প্রিন্ট আউট.
>> এই প্রকৃতপক্ষে, সব dprintf এখানে কল
আমাদের কিছু প্রিন্ট করতে পারবেন একটি ফাইল বর্ণনাকারী, বলা হয়, যা
শুধু একটি পূর্ণসংখ্যা একটি ফাইল প্রতিনিধিত্ব করে.
, আত্মা খুব অনুরূপ কিন্তু একটি ফাইল থেকে মৌলিকভাবে ভিন্ন
তারকা পয়েন্টার.
আপনার মত সিনট্যাক্স ব্যবহার করতে পারেন কিভাবে লক্ষ্য করুন printf, এখানে আমি পরিবর্তনশীল করতে পারেন, যাতে
দৈর্ঘ্য মত কিছু সন্নিবেশ একটি HTTP হেডার মান জন্য
বিষয়বস্তু দৈর্ঘ্য বলা হয়.
এবং শেষ পর্যন্ত আমি ব্যবহার ফাংশন আসলে লেখার অধিকার
অনুরোধ শরীর.
>> দুর্ভাগ্যবশত, আমরা শুধুমাত্র বাস্তবায়িত পরিবর্তনশীল জন্য সমর্থন
উত্পন্ন পিএইচপি ফাইল.
আমরা সমর্থন বাস্তবায়ন না স্ট্যাটিক gifs মত ফাইল, এবং JPEGs,
এবং CSS এবং HTML ফাইল.
যে, দুর্ভাগ্যবশত, আপনি ছেড়ে দেওয়া হয় ক্লায়েন্ট উদ্দেশ্য সাড়া
এই কাজ করতে.
সেখানে তাই আপনি যদি আছে যে খুঁজে পাবেন না যে ব্লক মধ্যে অনেক অনুপ্রেরণা,
কিন্তু কিভাবে এ একটু বেশী আপনি যদি আমরা পিএইচপি কোড ব্যাখ্যা সম্পর্কে গিয়েছিলাম
ফাংশন আপনি ব্যবহার করব একটু ভিন্ন.
>> আসলে, আপনি ধার নিতে পারেন কার্যকারিতা কিছু
সম্ভবত ফরেনসিক থেকে সমস্যা সেট, কারণ
দিনের শেষে সব আপনি প্রয়োজন আপনি কি জানেন একবার এখানে না খোলা কি ফাইল
আপনি কি জানেন একবার এবং এটি তথাকথিত এর MIME প্রকার বা কন্টেন্ট টাইপ,
আপনি ঐ বাইট পড়া প্রয়োজন এবং একরকম ফিরে তাদের থুতু.
>> এই এবং এখন একটি সফর ফাইল এর অন্যান্য কার্যাবলী.
প্রথম সংযুক্ত করা হয় আপ, যা কেবল সত্য ফেরৎ
যখন এটি পরিশেষে একটি দায়ের একটি ব্যবহারকারী থেকে সংযোগ.
পরবর্তী ত্রুটি.
ত্রুটি এদিকে, হিসাবে একটি ফাংশন আমরা বিভিন্ন 400 সব হ্যান্ডেল লিখেছেন
এবং 500 HTTP- র অবস্থা আপনি চাইতে পারেন যে কোড
ব্যবহারকারী যাও ফেরত পাঠাতে, একটি প্রমিত বার্তা সহ.
>> পরবর্তী আপ লোড, একটি বিশেষ যার উদ্দেশ্য জীবনের মাংসল ফাংশন,
একটি ফাইল তারকা থেকে পড়তে হয় পয়েন্টার একটি আন্তর্জাতিক বাফারের মধ্যে একটি ফাইলের বিষয়বস্তু
আমরা বিশ্বব্যাপী ঘোষণা যে [উপরে? প্রধান. ?]
এই কারণে আমরা একটু জটিল ফাইল থেকে বাইট পড়া আছে
কিন্তু প্রতিটি পুনরাবৃত্তির পরীক্ষা ইতিমধ্যে আমরা করেছি কিনা
ফাইলের শেষে আঘাত বা অন্য কিছু ভুল হয়ে গেছে.
এবং আমরা নিশ্চিত করুন যে আপনি realloc ব্যবহার যাই হোক না কেন আমরা ব্যবহার করছেন বাফার ক্রমবর্ধমান হয়
এবং ক্রমবর্ধমান এবং সবসময় ক্রমবর্ধমান এবং বাইটের সংখ্যা এগিয়ে থাকা
আমরা সেখানে মাপসই করা হবে যে.
হ্যান্ডলার এদিকে, যে পায় ফাংশন
থাকার উপায় দ্বারা বলা একটি সংকেত হিসাবে কন্ট্রোল সি নিবন্ধিত
আমরা বিচ্ছিন্ন করতে চান.
হ্যান্ডলার এখানে লক্ষ্য করুন এটা যে শেষ পর্যন্ত
কল বন্ধ, যা অবশ্যই ওয়েব সার্ভার স্টপ.
এবং দুর্ভাগ্যবশত, লুকআপ প্রয়োগ করা হয় না.
আত্মা, এই একটি হল মোটামুটি সহজ ফাংশন.
একটি ফাইল এক্সটেনশন দেওয়া, এটা প্রয়োজন এটা এমআইএমই তথাকথিত এর ফিরে
টাইপ বা কন্টেন্ট টাইপ.
এবং আমরা নির্দেশের মধ্যে উল্লেখ যে ম্যাপিং হতে হবে কি.
কিন্তু আপনি অনুবাদ করতে হবে শেষ পর্যন্ত গ কোড থেকে এটি.
>> পরবর্তী আপ আমাদের একভাবে মাংসল ফাংশন জীবনে যার উদ্দেশ্য, পার্স বলা
না একটি ফাইল থেকে, পড়তে হয়, কিন্তু একটি নেটওয়ার্ক সংযোগ থেকে.
বিশেষ করে, পড়া এবং পার্স একটি ব্রাউজার থেকে আসা যে HTTP অনুরোধের
যাতে সার্ভারে শেষ পর্যন্ত আমরা বিশ্লেষণ করতে
অনুরোধ শুধু হেডার এ লাইন এবং যারা আপনাকে ফিরে
একটি আন্তর্জাতিক বাফার উপায় দ্বারা যে আমরা [উপরে ঘোষিত? প্রধান. ?]
>> এদিকে, একটি হল, রিসেট করুন আমরা সংজ্ঞায়িত যে ফাংশন
যে iteratively ভিতরে নামক পরার প্রধান প্রত্যেক সময় আপনি সম্পর্কে
শোনা শুরু করার জন্য প্রস্তুত নতুন সংযোগের জন্য
আমরা সবসময় জানি যাতে আমাদের ভেরিয়েবল রাজ্যের
এবং যে তাই আমরা করেছি কোন মেমরি মুক্ত হয়
জন্য বরাদ্দ করা হয়ে থাকতে পারে পূর্ববর্তী নেটওয়ার্ক সংযোগ.
পরবর্তী আপ শুরু, আমরা লিখেছেন যে ফাংশন
যে একটি সম্পূর্ণ রয়েছে নেটওয়ার্কিং কোড অনেক
যে শেষ পর্যন্ত ওয়েব সার্ভার আরম্ভ করা হয়.
>> শেষ পর্যন্ত ফাংশন বলা স্টপ, যা
ঠিক যে, এটা ওয়েব সার্ভার স্টপ.
কিন্তু প্রথম এটি কোন মেমরি মুক্ত আপ যে এখনও বরাদ্দ করা হয়েছে.
কিন্তু শেষ পর্যন্ত প্রস্থান কল এমনকি নিয়ন্ত্রণ ফিরে ছাড়া
আমাদের প্রধান ফাংশন.
পরিশেষে, এক সবচেয়ে গুরুত্বপূর্ণ কৌশল
বাস্তবায়নের যখন এই ওয়েব সার্ভার শুদ্ধাশুদ্ধি একটি বিট হতে যাচ্ছে,
এক ব্রাউজার উইন্ডোতে খোলা হচ্ছে এ অধিকার এবং একটি টার্মিনাল উইন্ডোর এ
বাম, সার্ভার কনসোল উইন্ডো, যাতে আপনি
যে বার্তা দেখতে পারেন পর্দায় প্রদর্শিত হচ্ছে.
>> কিন্তু এখনও ভাল একটি তৃতীয় হবে উইন্ডো, একটি দ্বিতীয় টার্মিনাল উইন্ডোর,
যা আপনি টেলনেট ব্যবহার ব্যবহার যার জন্য বৈশিষ্ট নির্ধারিত হয়.
এবং টেলনেট শুধু একটি খুব হয় সহজ নেটওয়ার্ক প্রোগ্রাম
আপনি যে সাজা দেয় এক উইন্ডোতে একটি ব্রাউজার হতে
অন্য উইন্ডোতে যখন কথা বলা.
আপনি দেখতে পারেন এই ভাবে ঠিক পাঠগত কমান্ড
ফিরে যে আসছে সার্ভার থেকে ক্লায়েন্ট
খোঁচা করেও ক্রোম এর ডেভেলপার প্রায়
একটি অন্যথায় সরঞ্জাম তোরে আমি খাইছি ইন্টারফেস.