import socket
import re
from multiprocessing import Process
ROOT_DIR = './html'
def handle_client_socket(client_socket, client_address):
print('[%s,%s]用户连接' % (client_address))
requ_data = client_socket.recv(1024)
print('request_data : %s' % requ_data)
requ_data_lines = requ_data.splitlines()
for line in requ_data_lines:
print(line)
requ_start_line = requ_data_lines[0]
filename = re.match(r"\w+ +(/[^ ]*) ", requ_start_line.decode("utf-8")).group(1)
if '/' == filename:
filename = '/index.html'
file = open(ROOT_DIR + filename, 'rb')
filedata = file.read()
file.close()
response_start_line = 'HTTP/1.1 200 OK\r\n'
response_headers = 'Server: My server\r\n'
response_body = filedata
response = response_start_line + response_headers + '\r\n' + response_body.decode('utf-8') # 加一个/r/n
client_socket.send(bytes(response,encoding='utf-8')) # 字符串数据要进行encode才能在网络上发送
client_socket.close()
if __name__ == '__main__':
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 7898))
server_socket.listen(5)
while True:
client_socket, client_address = server_socket.accept() # accept必须在while中才能阻挡循环自动无限进行
p = Process(target=handle_client_socket, args=(client_socket, client_address,))
p.start()
Python简单静态服务器程序
最新推荐文章于 2024-07-14 15:21:37 发布