Python编程:socket实现简单的网站服务器

简介: Python编程:socket实现简单的网站服务器

发送字符串

# 用socket实现一个简单的服务器,可以通过浏览器来访问
import socket
def handle(conn):  # 请求处理函数
    data = conn.recv(1024)
    print(data)
    conn.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding="utf-8"))
    conn.send(bytes("<h1>hello world<h1>",encoding="utf-8"))
def main():
    server = socket.socket()
    server.bind(("localhost", 8000))
    server.listen(5)
    print("服务启动")
    while True:
        conn, addr = server.accept()
        print(conn, addr)
        handle(conn)
        conn.close()
if __name__ == "__main__":
    main()
"""data
GET / HTTP/1.1
Host: 127.0.0.1:8000
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) 
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8
Cookie: csrftoken=u8AqdKAvfHiF0To5s8p3Dqxec2uSWldxnOOpOEbUVLPHTWVWDSUck4zFjNPxjV8V
"""

显示效果

image.png


发送html文件


# 改进版服务器,可以从文件中读取文件并发送给客户端
import socket
def handle(conn):
    buf = conn.recv(1024)
    conn.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding="utf-8"))
    f = open("index.html", "rb")
    data = f.read()
    f.close()
    conn.send(data)
def main():
    server = socket.socket()
    server.bind(("localhost", 8000))
    server.listen(5)
    print("服务启动")
    while True:
        conn, addr = server.accept()
        print(conn, addr)
        handle(conn)
        conn.close()
if __name__ == "__main__":
    main()

显示效果

image.png


嵌入变量

# 改进版服务器,可以从文件中读取文件并替换变量 发送给客户端
import socket
import time
def handle(conn):
    buf = conn.recv(1024)
    conn.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding="utf-8"))
    f = open("index.html", "r")
    data = f.read()
    f.close()
    now_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
    html = data.replace("{{time}}", now_time)
    conn.send(bytes(html, encoding="utf-8"))
def main():
    server = socket.socket()
    server.bind(("localhost", 8000))
    server.listen(5)
    print("服务启动")
    while True:
        conn, addr = server.accept()
        print(conn, addr)
        handle(conn)
        conn.close()
if __name__ == "__main__":
    main()

显示效果

image.png


刚刚的{{ time }} 被替换为了当前时间

相关文章
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
319 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
345 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
276 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
206 82
|
5月前
|
网络协议 关系型数据库 应用服务中间件
如何迁移网站数据到新的服务器
迁移网站数据到新服务器是一个系统化的过程,需谨慎操作以避免数据丢失或服务中断。小编为您整理发布如何迁移网站数据到新的服务器,以下是详细步骤和注意事项。
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
219 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
483 3
|
2月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
397 2
|
2月前
|
自然语言处理 监控 数据可视化
如何建设网站:使用阿里云的服务器网站建设5大步骤
企业用阿里云服务器建网站,无需复杂技术,按五步骤即可。先规划需求明确网站功能;再选入门级服务器并初始化;接着部署 PageAdmin CMS,可视化操作易上手;然后选模板填内容搭建网站;最后测试适配与稳定性,绑定域名备案后上线。PageAdmin 还方便后期维护调整。
484 10
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
300 3

推荐镜像

更多