# # 静态web服务器
# from socket import *
# from multiprocessing import Process
#
# def main():
# # tcp sever
# tcpsocker = socket(AF_INET, SOCK_STREAM)
# tcpsocker.bind(('', 8001))
# tcpsocker.listen(128)
#
# while True:
# cli_socket, cli_address = tcpsocker.accept()
# print('%s %s:' % cli_address)
# p = Process(target=handle, args=(cli_socket,))
# p.start()
# cli_socket.close()
#
# def handle(cli_socket):
# recvdata = cli_socket.recv(1024)
# print('recvdata:', recvdata)
# # 解析HTTP报文数据
# # 提取请求方式
# # 提取请求路径
# # 返回指定报文
# response_start_line = 'HTTP/1.1 200 OK\r\n'
# response_header = 'Server:My server\r\n'
# response_body = 'hello leeguandong'
# response = response_start_line + response_header + '\r\n' + response_body
# print('response data:', response)
# cli_socket.send(bytes(response, 'utf-8'))
# cli_socket.close()
#
# if __name__ == '__main__':
# main()
# # 静态文件web服务器
# # 在服务器中维护了对于请求的应答文件
# from socket import *
# from multiprocessing import Process
# import re
#
# # 设置静态文件根目录
# HTML_ROOT_DIR = './html'
#
# def main():
# # tcp sever
# tcpsocker = socket(AF_INET, SOCK_STREAM)
# tcpsocker.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
# tcpsocker.bind(('', 8000))
# tcpsocker.listen(128)
#
# while True:
# cli_socket, cli_address = tcpsocker.accept()
# print('%s %s:' % cli_address)
# p = Process(target=handle, args=(cli_socket,))
# p.start()
# cli_socket.close()
#
# def handle(cli_socket):
# recvdata = cli_socket.recv(1024)
# print('recvdata:', recvdata)
# # 解析HTTP报文数据
# request_lines = recvdata.splitlines()
# for line in request_lines:
# print(line)
#
# # 提取请求方式
# request_start_line = request_lines[0]
# file_name = re.match(r'\w+ +(/[^ ]*)', request_start_line.decode('utf-8')).group(1)
# print('*******')
# print(file_name)
#
# if '/' == file_name:
# file_name = '/index.html'
#
# # 提取请求路径
# try:
# file = open(HTML_ROOT_DIR + file_name, 'rb')
# print('--------------------')
# print(file)
# except IOError:
# response_start_line = 'HTTP/1.1 404 not found\r\n'
# response_header = 'Server:My server\r\n'
# response_body = 'not found'
# else:
# file_data = file.read()
# print(file_data)
# file.close()
#
# # 返回指定报文
# response_start_line = 'HTTP/1.1 200 OK\r\n'
# response_header = 'Server:My server\r\n'
# response_body = file_data.decode('utf-8')
# response = response_start_line + response_header + '\r\n' + response_body
# print('response data:', response)
# cli_socket.send(bytes(response, 'utf-8'))
# cli_socket.close()
#
# if __name__ == '__main__':
# main()
# 面向对象编程
# 静态文件web服务器
# 在服务器中维护了对于请求的应答文件
from socket import *
from multiprocessing import Process
import re
# 设置静态文件根目录
HTML_ROOT_DIR = './html'
class HttpServer():
def __init__(self):
# 为什么要加self? 如果不添加self,那么一离开__init__方法,这个属性就丢了,所以要存到self对象里面去
self.tcpsocker = socket(AF_INET, SOCK_STREAM)
self.tcpsocker.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
def bind(self, port):
self.tcpsocker.bind(('', port))
def start(self):
self.tcpsocker.listen(128)
while True:
cli_socket, cli_address = self.tcpsocker.accept()
print('%s %s:' % cli_address)
p = Process(target=self.handle, args=(cli_socket,))
p.start()
cli_socket.close()
def handle(self, cli_socket):
recvdata = cli_socket.recv(1024)
print('recvdata:', recvdata)
# 解析HTTP报文数据
request_lines = recvdata.splitlines()
for line in request_lines:
print(line)
# 提取请求方式
request_start_line = request_lines[0]
file_name = re.match(r'\w+ +(/[^ ]*)', request_start_line.decode('utf-8')).group(1)
print('*******')
print(file_name)
if '/' == file_name:
file_name = '/index.html'
# 提取请求路径
try:
file = open(HTML_ROOT_DIR + file_name, 'rb')
print('--------------------')
print(file)
except IOError:
response_start_line = 'HTTP/1.1 404 not found\r\n'
response_header = 'Server:My server\r\n'
response_body = 'not found'
else:
file_data = file.read()
print(file_data)
file.close()
# 返回指定报文
response_start_line = 'HTTP/1.1 200 OK\r\n'
response_header = 'Server:My server\r\n'
response_body = file_data.decode('utf-8')
response = response_start_line + response_header + '\r\n' + response_body
print('response data:', response)
cli_socket.send(bytes(response, 'utf-8'))
cli_socket.close()
def main():
httpserver = HttpServer()
httpserver.bind(8000)
httpserver.start()
if __name__ == '__main__':
main()
没有合适的资源?快使用搜索试试~ 我知道了~
python学习-web服务器案例.zip
共10个文件
py:5个
pyc:2个
web服务器案例-2:1个
需积分: 5 0 下载量 143 浏览量
2024-01-04
16:25:55
上传
评论
收藏 13KB ZIP 举报
温馨提示
Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。它是由荷兰人吉多·罗萨姆于1989年发布的,第一个公开发行版发行于1991年。Python注重解决问题的方法,而不是语法和结构。它被广泛应用于各个领域,包括Web开发、数据分析、人工智能、科学计算等。 Python的优点包括: 简单易学:Python的语法简洁明了,易于理解和学习。 高级特性:Python支持面向对象编程、函数式编程等高级特性,使得代码更加模块化和可重用。 广泛的库和框架:Python拥有丰富的第三方库和框架,可以快速开发各种应用。 跨平台性:Python可以在多个操作系统上运行,包括Windows、Linux和MacOS等。 强大的社区支持:Python拥有庞大的开发者社区,提供了丰富的文档、教程和解决方案。 Python的应用范围广泛,包括但不限于: Web开发:Python的Web框架(如Django和Flask)可以用于构建高效的Web应用程序。 数据分析和科学计算:Python的数据分析库(如NumPy和Pandas)和科学计算库(如SciPy)可以用于处理和分析大量数据。 人工智能
资源推荐
资源详情
资源评论
收起资源包目录
web服务器案例.zip (10个子文件)
web服务器案例
web服务器案例-2.py 3KB
web服务器案例-1 4KB
html
index.html 136B
web服务器案例-1.py 5KB
wsgipython
ctime.py 1KB
__pycache__
ctime.cpython-35.pyc 359B
web服务器框架
Mywebframework.py 2KB
Mywebserver.py 2KB
__pycache__
Mywebframework.cpython-35.pyc 2KB
web服务器案例-2 2KB
共 10 条
- 1
资源评论
rgb2gray
- 粉丝: 2w+
- 资源: 146
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功