વક્તા: હવે દો માતાનો ડાઈવ વિતરણ કોડમાં
અને સંદર્ભમાં પર એક નજર જેમાં કોડ તમે લખો
સંચાલન કરી રહ્યું છે.
દિવસ ના અંતે, તમે અમલ કરવા જઈ રહ્યા છો
વેબ સર્વરનું સમગ્ર.
પરંતુ અમે આપેલા છે હાડપિંજર સાથે તમને
કેટલાક વિધેય હોય છે કે કોડ છે, ખાસ કરીને નેટવર્કિંગ સાથે સંબંધિત.
ચાલો એક નજર.
>> અહીં ટોચ તરફ અપ જેથી આ ફાઇલ એક ટોળું છે
લક્ષણનો મેક્રો જરૂરીયાતો પરીક્ષણ.
હવે આ ગ, જેમાં માત્ર એક લક્ષણ છે મદદ પાનાંઓ એક ટોળું મુજબ
તમે કેટલાક વ્યાખ્યાયિત કરવા માટે હોય છે આ સ્થિરાંકો વાત સાચી છે
અથવા કે જેથી પણ ચોક્કસ નંબરો હોવાનું તમે અમુક કાર્યો વપરાશ હોય છે.
અન્યથા તેઓ અઘોષિત આવશે અને તમે ઍક્સેસ હશે નહીં.
તેથી હું જે રીતે દ્વારા આ કંઇ કર્યું ના મદદ પાનાંઓ વાંચી.
હવે નીચે નીચે, માં 17 દ્વારા લીટીઓ 15, અમે
જાહેર કર્યો મર્યાદા સંપૂર્ણ જથ્થો હોય છે.
>> અને અમે એક આ ઉધાર કર્યું અપાચે કહેવાય લોકપ્રિય વેબ સર્વર.
અને આ માત્ર છે જતા હોય છે કે નંબરો
કુલ સંખ્યા નિયંત્રણ મૂકવા બાઇટ્સ કે માન્ય છે
આ HTTP વિનંતિ માટે વિવિધ સંદર્ભોમાં કે એક બ્રાઉઝર છે મને મોકલો માન્ય છે.
પછી, આપણે ઓક્ટેટ વ્યાખ્યાયિત કરે છે.
હવે એક ઑક્ટેટ માત્ર એક ફેન્સી માર્ગ છે એક બાઇટ, અથવા આઠ બિટ્સ કહેતા.
Yesteryear એક બાઇટ માં બહાર કરે જરૂરી નથી આઠ બિટ્સ હતી,
તેથી ઑક્ટેટ હંમેશા આઠ બિટ્સ છે.
તેથી આ કિસ્સામાં અમે અપનાવવામાં આવ્યાં છે શું નેટવર્કીંગ સામાન્ય છે
આઠ બાઇટ્સ એક ઑક્ટેટ બોલાવવા ની વિશ્વ.
>> અહીં હું ઓક્ટેટ ચાલશે કે સ્પષ્ટ કર્યું તેથી તે ખૂબ વિદેશી જેમ, 512 થઈ
અમે એક ટોળું વાંચી ત્યારે એક સમયે બાઇટ્સ, અહીં પણ,
અમે એક વાંચી રહ્યા છીએ એક સમયે ઓક્ટેટ ના ટોળું.
હેડર ફાઈલો સંપૂર્ણ સમૂહ પછીના.
હું કેવી આ સમાવવા માટે ખબર હતી?
સાથે સાથે હું ફક્ત માણસ વાંચી કાર્યો એક નંબર માટે પૃષ્ઠો
અમે આ વિતરણ ઉપયોગ કરશો કે કોડ અને રાશિઓ માં સમાવેશ
હું સૂચના આપવામાં આવી.
>> અને હવે અમે એક માહિતી પ્રકાર છે.
અમે ચાર રચે હોવાનું એક ઑક્ટેટ જાહેર કર્યું છે.
અને અમે તે છે કે પાછળથી જોશો FIPS એ દરમ્યાન વપરાય.
અને અમે જાહેર કર્યું છે એક પ્રોટોટાઇપ સંપૂર્ણ જથ્થો,
અને અમે મારફતે ઝડપથી ચાલવા પડશે તે કાર્યો દરેક.
છેલ્લે, અને કદાચ સૌથી રાખો મહત્વની
આ બિંદુએ ઓછામાં વાંધો વાર્તા, કે ત્યાં
હકીકતમાં, સમગ્ર છે વૈશ્વિક ચલો સમૂહ
આ ફાઇલ ટોચ પર, રુટ, CFD, એસ.ડી.એફ, વિનંતી, ફાઇલ અને શરીર.
>> હવે સામાન્ય રીતે, ત્યાં ઘણા વૈશ્વિક વાપરીને ચલો, અથવા બધા પર વૈશ્વિક ચલો,
પાછળ પ્રથા નથી.
પરંતુ તે અમે પણ એક ઉપયોગ કરી રહ્યાં છો બહાર કરે ટેકનિક કહેવાય સંકેત હેન્ડલિંગ પાછળથી
માટે પરવાનગી આપે છે કે જે કોડ છે, માં વપરાશકર્તાને કંઈક બનાવ્યા ત્યારે શોધી
CTRL C અને બંધ જેવા પ્રભાવશાળીપણે સર્વર.
અને ક્રમમાં પ્રભાવશાળીપણે તે કરવા માટે અને ખરેખર મુક્ત મેમરી અપ,
અમે વપરાશ હોય છે જરૂર આ વૈશ્વિક ચલો.
>> અને હવે મુખ્ય પર એક નજર, લેવા દો, જે આ કાર્યક્રમ સમગ્ર બનાવ્યો.
પ્રથમ, અહીં ટોચ પર અમે ભૂલ નંબર ચલ હોય
કે ન તેમ લાગે છે એક પ્રકાર ધરાવે છે, પરંતુ તે છે
તે ખરેખર છે, કારણ કે તરીકે ઓળખાતી ફાઈલ માં વ્યાખ્યાયિત
ભૂલ errno.h જે ઉચ્ચ અપ સમાવવામાં આવેલ છે.
તમે ખરેખર કરવા errno માણસ કરો તો આ વસ્તુ માટે વ્યાખ્યા જોવા,
જો તમે આ એક છે કે જોશો ખાસ વૈશ્વિક ચલ કે
સંપૂર્ણ જથ્થો દ્વારા સુયોજિત થયેલ છે કાર્યો લખેલા ન
અમને દ્વારા, પરંતુ Linux ના લેખકો દ્વારા અને અન્ય સિસ્ટમો વાસ્તવમાં સુયોજિત કરો
કે ચલ જ્યારે કંઇક કરવા સંખ્યાબંધ ખોટું થાય તો તમે વૈશ્વિક કરી શકો કે જેથી
ખોટી જઈ શું કર્યું એ સમજી.
>> હવે નીચે નીચે તમે નવી જોશો ટેકનિક કદાચ, getopt વાપરીને
વિશ્લેષણ આદેશ મદદ કરે છે કે કાર્ય વાક્ય દલીલો અમે નથી કે જેથી
figuring વ્યય સમય સંતાપ હોય આઉટ 8080 કંઈક પાર્સ કેવી રીતે,
અથવા ડેશ પૃ, અથવા ડેશ ક મદદ મેળવવા માટે.
getopt અનિવાર્યપણે અમારા માટે કે કરે છે.
વધુ માટે મદદ પાનું જુઓ.
>> પછી, આપણે ભૂલ એક બીટ કરવું તેની ખાતરી કરવા માટે ચકાસણી
પોર્ટ નંબર અંદર છે કે સ્પેક સ્પષ્ટ કરેલ શ્રેણી.
પછી, આપણે આ કાર્ય માટે કૉલ જોવા જેની વ્યાખ્યા, અમે કરીશું શરૂ
એક ક્ષણ જોવા, અને તેનું નામ તરીકે આ વેબ સર્વર શરૂ થાય છે, જે સૂચવે છે.
અહીં અમે એક કાર્ય માટે કૉલ હોય જે કહે છે કહેવાય સંકેત,
અને જો તમારી પાસેથી નિયંત્રણ સી સાંભળવા જ્યારે વપરાશકર્તાની કીબોર્ડ, આગળ વધો અને કૉલ
બનશે કે જે કાર્ય કહેવાય સંભાળનાર માટે આખરે સ્વચ્છ વસ્તુઓને અને બંધ
સર્વર.
>> કે નીચે એક હોય તેવું લાગે છે તે છે અનંત લૂપ, પ્રથમ વાક્ય જેમાંથી
અસરકારક કોલ છે કહેવાય કાર્ય કરવા
જાતને અમે જે, રીસેટ ક્રમમાં પાછળથી અમલ
અમારા વૈશ્વિક રાજ્યો કેટલાક મુક્ત.
કે પછી એક વાક્ય છે કોડ કે શરતે
પરત ચકાસે છે જોડાયેલ બજારમૂલ્ય.
એક predicate જેવા હવે જોડાયેલ દેખાવ, સાચું કે ખોટું આપે છે કે જે કંઈક.
અને તે કરે છે, પરંતુ ત્યાં જોડાયેલ માં ખાસ કંઈક
કે તે એક અવરોધિત કરવાનું કોલ છે.
તે ત્યાં બેસીને રાહ જોવી પડશે વપરાશકર્તા બ્રાઉઝર ત્યાં સુધી
આ વેબ સાથે જોડાવા માટે પ્રયાસ કરે છે સર્વર અને માત્ર પછી તે કરશે
અમે આગળ વધવા કે જેથી સાચું કે ખોટું પરત આ તો વિધાન અંદરની કરો.
>> ત્યાં એક વાર, એક કરવા માટે આ કાર્ય નોટિસ અમે લખ્યું જે વિશ્લેષણ કહેવાય વિધેય,
જે બધા માટે, ઓક્ટેટ તમામ પદચ્છેદન કરે એક બ્રાઉઝર આવતા બાઇટ્સ
સર્વર પર, કે જેથી અમે હાથ શકો એક સાથે તમે પાછા છેવટે નીચેની
તે વૈશ્વિક ચલો કે સ્ટોર્સ માત્ર માં બાઇટ્સ તમામ
કે ના હેડરો વિનંતી, ન શરીર
તે માટે ખરેખર એક શરીર ત્યાં તો.
>> હવે અમે માટે શરૂ નીચે નીચે બહાર કાઢવા તે હેડરો પાર્સ
આ જાણકારી ઉપગણ અમે વિશે કાળજી છે.
ખાસ કરીને, દર આ સ્પષ્ટીકરણ, અમે પ્રથમ
છે, કે જે વાક્ય વિનંતી કરવા ઇચ્છતા માત્ર કે ખૂબ જ પ્રથમ વાક્ય કે
આસ્થાપૂર્વક વિચાર કંઈક કહે સ્લેશ અથવા અમુક પાથ અને પછી HTTP 1.1.
અમે આ રૂપક ઉપયોગ કરી રહ્યાં છો એક haystack એક સોય ની
ચોક્કસ જોવા માટે અક્ષરો અને સરનામું.
અને ખરેખર, એક નંબર છે અમારા વિતરણ કોડ વિધેયો
તમે તે, પણ, ઉપયોગી થઇ શકે છે ચોક્કસ કિંમતો માટે જોઈ રહ્યા હોય.
>> આખરે, અમે આ બાઇટ્સ નકલ એક ચલ કહેવાય લીટી માં,
જે પણ, અમે કર્યું, નોટિસ સ્ટેક પર ફાળવવામાં
એક ગતિશીલ માપવાળા એરે માર્ગ દ્વારા.
અને અમે જાણી જોઈને પ્રયાસ કરી રહ્યાં છો malloc કૉલ કરે ટાળવા
ફરી, કારણ કે કારણ નિયંત્રણ સી હોવાની
આ કાર્યક્રમ એક સંભવિત લક્ષણ, અમે અચાનક આ કોડ હોય નથી માંગતા
વપરાશકર્તાને હિટિંગ દ્વારા વિક્ષેપ નિયંત્રણ સી, જે પરિણામ
હું એક તક છે નથી શકે છે મફત કંઈક માટે હું malloced કર્યું છે.
તેથી હું ખૂબ તરીકે ઉપયોગ કરવાનો પ્રયાસ કરી રહ્યો છું સ્ટેક હું અહીં કરી શકો છે.
>> આગામી ડોસ માટે સંપૂર્ણ જથ્થો, અપ.
સ્પષ્ટીકરણ પ્રગટ કરશે અહીં અપેક્ષિત છે બરાબર શું પર,
પરંતુ ટિપ્પણીઓ તમને આપી શું એક સંકેતની આગળ આવેલું.
તમને પહેલી જરૂરિયાત વિનંતી વાક્ય માન્ય
અને તે જેવી લાગે છે કે નહીં તેની ખાતરી સ્પષ્ટીકરણો, તેથી વાત કરવા માટે, વ્યાકરણ
તે જોઇએ કહે છે.
તમે પછી કંઈક બહાર કાઢવા માટે જરૂર છે બહાર સામગ્રી, આ ક્વેરી કહેવાય
પ્રશ્ન ચિહ્ન પછી, જેવા અમે અમારી ગૂગલ ઉદાહરણ સાથે જોવા મળી
એક એચડી પરિમાણ માં પસાર કરે છે.
અમે પછી એકસાથે એકસાથે જોડવું વેબ સર્વરની રુટ
માં છે કે પથ સાથે કે વિનંતી પ્રથમ વાક્ય
અને સંપૂર્ણ પાથ રચના આ ફાઇલ અમે જોવા માંગો છો.
>> ત્યારબાદ, અમે ખાતરી કરવા માટે જઈ રહ્યાં છો કે જે ફાઈલ અસ્તિત્વમાં છે અને વાંચી શકાય છે.
અને પછી અમે બહાર કાઢવા રહ્યા છીએ તેના ફાઇલ એક્સ્ટેંશન, આ .html અથવા PHP,
અથવા ઓછામાં છે કે કેટલાક જેમ વિસ્તરણ વિનંતી શબ્દમાળા ખૂબ ઓવરને.
અપ આગલું સમગ્ર છે કોડના ટોળું અમે લખ્યું
વાસ્તવમાં PHP પેદા કરવા તમારા માટે સામગ્રી પેદા.
ટૂંકમાં, આ કોડ નામે લે
આ ફાઈલની તમે PHP અર્થઘટન કરવા માંગો છો.
અમે કહેવાય છે તેની કરીને તેને પસાર PHP, માતાનો ઈન્ટરપ્રીટર એક પાઇપ.
જોકે તરીકે પ્રતિભાવ પાછા મળી પ્રતિભાવ ફાઈલ પોતે હતા.
અને પછી અમે તે ફાઈલ માતાનો પર ફરી વળવું એક બફર માં તેમને બધા ખેંચીને બાઇટ્સ,
અમે આખરે આ કરી શકો કે જેથી તેમને છાપે.
>> આમાંથી ખરેખર, બધા dprintf માટે અહીં કહે
અમને કંઈક છાપવા માટે પરવાનગી આપે છે ફાઇલ વર્ણનકર્તા, કહેવાય જે
માત્ર પૂર્ણાંક છે કે ફાઈલ રજૂ કરે છે.
, ભાવના ખૂબ સમાન છે, પરંતુ ફાઈલ કરતાં મૂળભૂત રીતે જુદા
સ્ટાર નિર્દેશક.
તમારા જેવા વાક્યરચના ઉપયોગ કરી શકો છો નોંધ કેવી રીતે printf અહીં હું ગતિશીલ કરી શકો કે જેથી
લંબાઈ કંઈક દાખલ એ HTTP હેડર ની કિંમત માટે
સામગ્રી-લંબાઈ કહેવાય.
અને છેવટે હું વપરાયેલ કાર્ય ખરેખર લખવા માટે અધિકાર
વિનંતી કરવા માટે શરીર.
>> દુર્ભાગ્યે, અમે માત્ર અમલ ગતિશીલ રીતે માટે આધાર
પેદા PHP, ફાઈલો.
અમે માટે આધાર અમલ ન હતી સ્ટેટિક ગિફ્ટ્સ જેવી ફાઈલો, અને jpegs,
અને CSS અને HTML ફાઈલો.
કે, કમનસીબે, તમને બાકી છે ક્લાઈન્ટ હેતુ માટે જવાબ
આ કરવા માટે.
ત્યાં તેથી તમે છે તે મળશે નથી કે બ્લોક અંદર જ પ્રેરણા,
પરંતુ કેવી રીતે પર અપ થોડું વધારે તમને તો અમે PHP કોડ ઈન્ટરપ્રીટ વિશે ગયા
કાર્યો તમે ઉપયોગ કરશો થોડી અલગ છે.
>> હકીકતમાં, તમે ઉધાર શકે કાર્યત્મકતા કેટલાક
કદાચ વિદેશી થી સમસ્યા સેટ, કારણ
આ દિવસ ઓવરને અંતે તમામ તમે જરૂર તમે જાણો વાર અહીં શું છે ઓપન શું ફાઇલ
તમે જાણો એકવાર અને તે કહેવાતા છે MIME પ્રકાર અથવા સામગ્રી પ્રકાર,
તમે તે બાઈટમાં વાંચી જરૂર અને કોઈક બહાર તેમને પાછા બોલે.
>> આ અને હવે પ્રવાસ ફાઇલના અન્ય કાર્યો.
પ્રથમ જોડાયેલ છે અપ, જે ખાલી સાચું આપે
જ્યારે તે છેલ્લે એક સુનાવણી વપરાશકર્તા પાસેથી જોડાણ.
અપ આગલું ભૂલ છે.
ભૂલ, વચ્ચે, તરીકે કાર્ય આપણે વિવિધ 400 તમામ હેન્ડલ લખ્યું
અને 500 HTTP સ્થિતિ તમે ઇચ્છો કે જે કદાચ કોડ
વપરાશકર્તાને પાછા મોકલવા માટે, પ્રમાણભૂત સંદેશ સાથે.
>> આગામી અપ લોડ છે, ખાસ કરીને જેની હેતુ જીવનમાં meaty કાર્ય,
ફાઈલ સ્ટાર માંથી વાંચવા માટે આવે નિર્દેશક વૈશ્વિક બફર માં ફાઈલના સમાવિષ્ટો
અમે વૈશ્વિક સ્તરે જાહેર કર્યું કે [ઉપર? મુખ્ય. ?]
આ અમે કારણ થોડી જટિલ છે આ ફાઇલ માંથી બાઇટ્સ વાંચી છે
પરંતુ દરેક ઇટરેશન પર તપાસો અમે પહેલેથી કર્યું કે શું
આ ફાઈલના અંતે હિટ અથવા કંઈક બીજું ખોટું થયું છે.
અને અમે ખાતરી કરવા માટે કે realloc ઉપયોગ ગમે અમે ઉપયોગ કરી રહ્યાં છો બફર વધી રહી છે
અને વધતી જતી અને હંમેશા વધતી જતી અને બાઇટ્સ સંખ્યા આગળ રહીને
આપણે ત્યાં ફિટ કરવા જેવી.
સંભાળનાર, વચ્ચે, છે નહીં કે કાર્ય
કર્યા માર્ગ દ્વારા કહેવાય સંકેત તરીકે નિયંત્રણ સી રજીસ્ટર
અમે પકડવાનો માંગો છો કે.
સંભાળનાર માં અહીં નોટિસ તે છેવટે
કોલ્સ, બંધ, જે અલબત્ત વેબ સર્વર બંધ કરે છે.
અને કમનસીબે, લૂકઅપ અમલમાં નથી.
ભાવના, આ એક છે એકદમ સરળ કાર્ય.
ફાઈલ એક્સટેન્સન આપવામાં, તે જરૂર તે MIME જેથી-કહેવાય છે પાછા આવવા
પ્રકાર અથવા સામગ્રી પ્રકાર.
અને અમે સ્પષ્ટીકરણમાં સ્પષ્ટ કે મેપિંગ હોવા જ જોઈએ શું.
પણ તમે અનુવાદ કરવા જરૂર છેવટે ગ કોડ માટે તેનો.
>> આગામી અપ અમારા જ રીતે meaty કાર્ય છે જીવનમાં જેની હેતુ, વિશ્લેષણ કહેવાય
નથી એક ફાઇલમાંથી, વાંચવા માટે છે, પરંતુ એક નેટવર્ક જોડાણ થી.
ખાસ કરીને, વાંચન અને વિશ્લેષિત એક બ્રાઉઝર આવે છે કે HTTP વિનંતિ
કે જેથી સર્વર સાથે છેવટે અમે પાર્સ શકો
વિનંતી માત્ર હેડરો પર લાઇન અને તમને તે પરત
વૈશ્વિક બફર માર્ગ દ્વારા કે અમે [ઉપરના જાહેર કર્યું? મુખ્ય. ?]
>> દરમિયાન, એક છે, રીસેટ અમે વ્યાખ્યાયિત કે કાર્ય
કે iteratively અંદર કહેવાય નહીં મુખ્ય દર વખતે તમે કરી રહ્યાં છો
સાંભળી શરૂ કરવા માટે તૈયાર નવું જોડાણ માટે
આપણે હંમેશા જાણતા કે જેથી અમારા ચલો રાજ્ય
અને તેથી કે જે અમે કર્યું કોઈપણ મેમરી મુક્ત કે
માટે ફાળવવામાં આવ્યા છે શકે પહેલાંના નેટવર્ક જોડાણ.
આગામી અપ છે શરૂ કરવા માટે, આ અમે લખ્યું તે કાર્ય
કે સમગ્ર સમાવે નેટવર્કિંગ કોડ ઘણો
કે આખરે વેબ સર્વર શરૂ થાય છે.
>> છેલ્લા અપ કાર્ય છે કહેવાય સ્ટોપ, જે
બરાબર છે કે કરે છે, તે વેબ સર્વર બંધ કરે છે.
પરંતુ પ્રથમ તે કોઇપણ મેમરી મુક્ત કરે છે કે હજુ સોંપી દેવાયેલ છે.
પરંતુ તે છેવટે બહાર નીકળો કહે પણ નિયંત્રણ પરત વગર
અમારી મુખ્ય કાર્ય કરવા માટે.
છેવટે, આ એક સૌથી મહત્વની ટેકનિક
અમલીકરણ ત્યારે આ વેબ સર્વર છે ટ્રાયલ અને ભૂલ એક બીટ હોઈ ચાલે,
એક બ્રાઉઝર વિન્ડો ખોલવા કર્યા અંતે અધિકાર અને ટર્મિનલ વિન્ડો પર
બાકી, આ સર્વર્સ કોન્સોલ વિન્ડો, કે જેથી તમે
છે એ સંદેશા જોઈ શકે સ્ક્રીન પર પ્રદર્શિત કરવામાં આવી રહી.
>> પરંતુ વધુ સારી હજુ ત્રીજા હશે વિન્ડો, બીજી ટર્મિનલ વિન્ડોમાં,
જેમાં તમે Telnet, વપરાશ વાપરો જેના માટે સ્પેક લખી આપવામાં આવે છે.
અને Telnet માત્ર એક ખૂબ જ છે સરળ નેટવર્ક પ્રોગ્રામ
કે જો તમે ડોળ કરવા દે એક વિન્ડો માં એક બ્રાઉઝર હોવું
બીજી વિન્ડો સાથે વાત કરતી વખતે.
તમે જોઈ શકો છો આ રીતે બરાબર એ શાબ્દિક આદેશો
પાછા કે આવી રહ્યા સર્વરમાંથી ક્લાઈન્ટ માટે
poking કર્યા વગર ક્રોમ માતાનો ડેવલપર આસપાસ
એક અન્યથા માં સાધનો clunkier ઈન્ટરફેસ.