欢迎光临
我们一直在努力

Python socket编写web服务端

只作为本地测试使用。简单,主要学习其流程方法。运行后使用本机浏览器访问本地地址和端口即可访问。源码和注释奉上学习交流:

import socket


def main():
"""
创建并运行一个TCP服务器,用于接收客户端连接并发送文件。
当客户端连接并请求文件时,根据请求路径返回相应的文件内容。
如果文件不存在或发生其他错误,则返回404错误页面。
"""
# 创建TCP/IP socket
tcp_socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 设置socket选项,允许地址重用,便于服务重启和快速绑定
tcp_socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

# 绑定IP地址和端口,这里默认的是本地127.0.0.1
tcp_socket_server.bind(("", 8800))

# 监听连接,最多等待1024个连接请求
tcp_socket_server.listen(1024)

while True:
# 持续等待客户端连接
print("等待客户端连接...")
tcp_socket_client, client_addr = tcp_socket_server.accept()
print("客户端地址:", client_addr)

# 接收客户端发送的数据
recv_data = tcp_socket_client.recv(1024)
if len(recv_data) == 0:
# 如果接收的数据长度为0,表示客户端已断开连接
print("客户端断开连接")
tcp_socket_client.close()
return

# 解码接收的数据并处理
recv_content = recv_data.decode('utf-8')
print("客户端发送内容:", recv_content)
recv_client_content = recv_content.split(' ', maxsplit=2)
request_path = recv_client_content[1]
if request_path == '/':
# 如果请求路径为根路径,则默认返回/index.html
request_path = '/index.html'

try:
# 尝试根据请求路径打开并读取文件
with open('./static' + request_path, 'rb') as file:
file_data = file.read()

except Exception as e:
# 如果文件不存在或其他异常,返回404错误页面
print(e)
response_header = 'HTTP/1.1 404 Not Found\r\n'
response_header += 'Server:PWS 1.0\r\n'
with open('./static/error.html', 'rb') as file:
file_data = file.read()
response_header += '\r\n'
response_body = file_data
response = response_header.encode('utf-8') + response_body
tcp_socket_client.send(response)

else:
# 如果成功读取文件,构造响应并发送给客户端
response_header = 'HTTP/1.1 200 OK\r\n'
response_header += 'Server:PWS 1.0\r\n'
response_header += '\r\n'
response = response_header.encode('utf-8') + file_data
tcp_socket_client.send(response)
tcp_socket_client.close()
finally:
# 无论成功或失败,最后都关闭socket连接
tcp_socket_client.close()


if __name__ == '__main__':
main()
赞(0) 打赏
未经允许不得转载:创想未来 » Python socket编写web服务端

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册