Python 3 實(shí)現(xiàn)簡單的 Web 服務(wù)器

Web服務(wù)器
  • 當(dāng)一個(gè)客戶(瀏覽器)聯(lián)系時(shí)創(chuàng)建一個(gè)連接套接字;
  • 從這個(gè)連接接收HTTP請求;
  • 解釋該請求以確定所請求的特定文件;
  • 從服務(wù)器的文件系統(tǒng)獲得請求的文件;
  • 創(chuàng)建一個(gè)由請求的文件組成的HTTP響應(yīng)報(bào)文,報(bào)文前面有首部行;
  • 經(jīng)TCP連接向請求的瀏覽器發(fā)送響應(yīng)。如果瀏覽器請求一個(gè)在該服務(wù)器中不存在的文件,服務(wù)器應(yīng)當(dāng)返回一個(gè)“404 Not Found”差錯(cuò)報(bào)文。
代碼實(shí)現(xiàn)
#import socket module
from socket import *
serverSocket = socket(AF_INET,SOCK_STREAM)
#Prepare a server socket
serverSocket.bind(('',80))
serverSocket.listen(5)
while True:
    print('Ready to server')
    connectionSocket, addr = serverSocket.accept()
    try:
        message = connectionSocket.recv(1024)
        filename = message.split()[1]
        f = open(filename[1:])
        outputdata = f.read()
        #Send one HTTP header line into socket
        header ='\nHTTP/1.1 200 OK\n\n'
        connectionSocket.send(header.encode('utf-8'))
        #Send the content of the requested file to the client
        for i in range(0,len(outputdata)):
            connectionSocket.send(outputdata[i].encode('utf-8'))
        connectionSocket.close()
    except Exception:
        #Send response message for file not found
        header = '\nHTTP/1.1 404 Not Found\n\n'
        connectionSocket.send(header.encode('utf-8'))
        #Close client socket
        connectionSocket.close()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容