生活随笔
收集整理的這篇文章主要介紹了
Python实现HTTP服务器(二)返回指定的html页面
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
通過前一篇博客我們可以了解,當(dāng)在瀏覽器端輸入127.0.0.1:7890時會發(fā)送request請求,格式為GET / HTTP/1.1,如果指定訪問頁面輸入127.0.0.1:7890/index.html時request請求,格式為GET /index.html HTTP/1.1。
因此我們可以通過正則表達(dá)式提取出index.html,然后將本地的index.html讀取發(fā)送給瀏器,得到相應(yīng)的頁面。
import re
import socket
def service_client(new_socket
):"""為這個客戶端返回數(shù)據(jù)"""request
=new_socket
.recv
(1024)request
=request
.decode
("utf-8") request_lines
=request
.splitlines
() print(request_lines
)file_name
=""ret
=re
.match
(r
"[^/]+(/[^ ]*)",request_lines
[0])if ret
:file_name
=ret
.group
(1)if file_name
=="/":file_name
="/index.html"try:f
=open("html"+file_name
,'rb')except:response
="HTTP/1.1 404 NOT FOUND\r\n"response
+='\r\n'response
+="----file not found----"new_socket
.send
(response
.encode
("utf-8"))else:html_content
=f
.read
()f
.close
()response
="HTTP/1.1 200 OK\r\n"response
+="\r\n" new_socket
.send
(response
.encode
("utf-8"))new_socket
.send
(html_content
)new_socket
.close
()def main():tcp_sever_socket
=socket
.socket
(socket
.AF_INET
,socket
.SOCK_STREAM
)tcp_sever_socket
.setsockopt
(socket
.SOL_SOCKET
,socket
.SO_REUSEADDR
,1)tcp_sever_socket
.bind
(("",7890))tcp_sever_socket
.listen
(128)while True:new_socket
,client_addr
=tcp_sever_socket
.accept
()service_client
(new_socket
)tcp_sever_socket
.close
()
if __name__
== '__main__':main
()
總結(jié)
以上是生活随笔為你收集整理的Python实现HTTP服务器(二)返回指定的html页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。