? ? ? ?最近開始學(xué)習(xí)python編程,今天看到實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Web服務(wù)器,就將所學(xué)的知識(shí)與遇到的問題記錄于此。
? ? ? ? 要建立一個(gè)Web服務(wù)器飞蹂,必須建立一個(gè)基本的服務(wù)器和一個(gè)”處理程序“,處理程序是一些處理主要“Web服務(wù)”的簡(jiǎn)單軟件翻屈。它用于處理客戶端請(qǐng)求陈哑,并返回適當(dāng)?shù)奈募o態(tài)文件和動(dòng)態(tài)文件伸眶。
? ? ? ?處理程序的復(fù)雜性決定了web服務(wù)器的復(fù)雜程度惊窖。python標(biāo)準(zhǔn)庫(kù)提供了3種不同的處理程序:
1.BaseHTTPRequestHandler,它可以在BaseHTTPServer模塊中找到厘贼。除了獲得客戶端請(qǐng)求外界酒,沒有實(shí)現(xiàn)其他的處理工作,因此必須自己完成其他的任務(wù)處理嘴秸。
2.SimpleHTTPServer模塊中的SimpleHTTPRequestHandler毁欣,它建立在BaseHTTPRequestHandler的基礎(chǔ)上,可以實(shí)現(xiàn)標(biāo)準(zhǔn)的GET和HEAD請(qǐng)求
3.CGIHTTPServer模塊中的CGIHTTPRequestHandler處理程序岳掐,這個(gè)處理程序可以獲取SimpleHTTPRequestHandler凭疮,并添加了對(duì)POST請(qǐng)求的支持〈觯可以調(diào)用CGI腳本完成請(qǐng)求處理過程执解,也可以將聲稱的HTML腳本返回給客戶端。
接下來展示如何使用BaseHTTPRequestHandler來實(shí)現(xiàn)對(duì)客戶端GET請(qǐng)求的處理
開始運(yùn)行程序纲酗,輸入命令python src/myhttpd.py衰腌,發(fā)現(xiàn)程序報(bào)如下錯(cuò)誤新蟆,
上網(wǎng)查了相關(guān)資料,見有人說在unix環(huán)境下右蕊,小于1024的端口不能被普通用戶綁定琼稻,只能由有root權(quán)限的用戶來進(jìn)行綁定,可是使用sudo命令也并不起作用尤泽,所以需要綁定一個(gè)大于1024的端口欣簇,最終問題得到解決规脸。