|
1. 源码如下- import socket
- import re
- import threading
- HOST = ""
- PORT = 7890
- ADDR = (HOST, PORT)
- class Wsgiserver(object):
- def __init__(self, addr):
- self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.server_socket.bind(addr)
- self.server_socket.listen(128)
- def server_forever(self):
- while True:
- tmp_socket, addr = self.server_socket.accept()
- t1 = threading.Thread(target=self.handler_req, args=(tmp_socket, ))
- t1.start()
- # 定义请求处理函数
- def handler_req(self, tmp_socket):
- # 接收请求数据
- recv_data = tmp_socket.recv(1024).decode("utf-8")
- print(">" * 50)
- print(recv_data)
- # 从请求数据内提取请求文件名
- request_lines = recv_data.splitlines()
- ret = re.match(r"[^/]+(/[^ ]*)", request_lines[0])
- file_name = ""
- 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------"
- tmp_socket.send(response.encode("utf-8"))
- else:
- html_content = f.read()
- f.close()
- response = "HTTP/1.1 200 OK\r\n"
- response += "\r\n"
- tmp_socket.send(response.encode("utf-8"))
- tmp_socket.send(html_content)
- tmp_socket.close()
- def main():
- myserver = Wsgiserver(ADDR)
- print("server running on port %s" % PORT)
- myserver.server_forever()
- if __name__ == '__main__':
- main()
复制代码 源码同级目录下有html目录,里面有网页的各种源码内容,
运行该文件启动服务器后,使用浏览器连接,出现file not found
|
-
运行结果
-
报错
|