Python之web服务器-返回404页面数据(四)

Python之web服务器-返回404页面数据(四)

# 导入模块
import socket
import re

if __name__ = '__main__':
	# 1.创建tcp服务端套接字
	tcp_server_socket = socket.socket(socket.AF_INET , socket.SOKE_STREAM)
	# .设置端口号复用
	tcp_server_socket.
	# 2. 绑定端口号
	tcp_server_socket.bind(("", 9090))
	# 3. 设置监听
	tcp_erver_socket.listen(128)
	while True:
		# 4.等待客户端的连接请求,并获取新的套接字和客户端的IP
		service_client_socket, ip_port = tcp_server_socket.accept()
		# 5.获取客户端发送的http请求报文数据
		http_request_data = service_client_socket.recv(4096)
		# 6.对二进制数据进行解码
		http_request_content = http_request_data.dacode("utf-8")
		print("http_request_content")
		# 7.正则匹配解码后客户端的请求报文
		match_obj = re.search("/\S*", http_request_content)
		if match_obj:
			# 7.1 匹配成功, 获取请求的资源连接
			request_path = match_obj.group()
			# 7.2 判断请求的路径是否是根路径,如果是根路径指定对应的文件
			if request_path == "/":
			try:
				# 7.3 打开文件读取文件数据
				with open("static" + request_path , "rb") as file:
					# 7.4 读取文件中的全部数据
					file_data = file.read()
			except Exception as e:
				# [8] 404 没有在服务器找到请求的文件
				# [8.1.1] 响应行
				response_line = "HTTP/1.1 404 Not Found\r\n"
				# [8.1.2] 响应头, 提示: 响应头信息程序员也可以根据自己的需要自定义一个响应头
				response_header = "Server:PWS/1.1\r\nother:ok\r\nContent-Type:text/html;charset=utf-8\r\n"
				# [8.1.3] 响应体
				response_body = "

非常抱歉,您当前访问的网页已经不存在了

" # [8.1.4] 组装http响应报文数据 response_data = (response_line + response_header + "\r\n" + response_body).encode("utf-8") # [8.1] 发送http响应报文数据个客户端 service_client_socket.send(response_data) else: # [8] 找到了响应请求的资源文件, 发送200的状态 # [8.1.1] 响应行 response_line = "HTTP/1.1 200 OK\r\n" # [8.1.2] 响应头 提示: 响应头信息程序员也可以根据自己的需要自定义一个响应头信息 # 注意: Content-Type: text/html;charset=utf-8: 服务器告诉浏览器数据的类型及编码格式 response_header = "Server:PWS/1.1\r\npther:ok\r\nContent-Type:text/html;charset=utf-8\r\n" # [8.1.3] 响应体 response_body = file_data # [8.1.4] 组装http响应报文数据 response_data = (respose_line + respose_header + \r\n +).encode("utf-8") + response_body # [8.1] 发送http响应报文数据给客户端 service_client_socket.send(respose_data) # 关闭套接字 service_client_socket.close()

你可能感兴趣的:(Python)