Python进阶教程 第 15 章:Python 网络编程Socket、HTTP Web框架入门

点击头像,进入个人中心,查看文章合集,还有更多Python相关的精彩教程等着你!

15.1 引言

网络编程是 Python 的强项之一,掌握它可以构建 网络通信、爬虫、API 服务、Web 应用 等。

本章将讲解:

  • socket 编程(底层网络通信)
  • requests 库进行 HTTP 请求
  • http.server 搭建简单 HTTP 服务
  • 使用 Flask 构建简单 Web 应用

15.2 Socket 编程


15.2.1 TCP 服务端

示例:

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("127.0.0.1", 8000))
server.listen()

print("服务器启动,等待连接...")
conn, addr = server.accept()
print("连接自:", addr)

data = conn.recv(1024)
print("收到:", data.decode())

conn.sendall(b"Hello Client")
conn.close()
server.close()

15.2.2 TCP 客户端

示例:

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("127.0.0.1", 8000))
client.sendall(b"Hello Server")

data = client.recv(1024)
print("收到:", data.decode())

client.close()

✅ 运行服务端后再运行客户端,双方可成功通信。


15.2.3 UDP 通信

示例:

# UDP 服务端
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("127.0.0.1", 9000))
print("等待中...")
data, addr = s.recvfrom(1024)
print("收到:", data.decode(), "来自", addr)
s.sendto(b"Hello UDP", addr)
# UDP 客户端
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(b"Hello Server", ("127.0.0.1", 9000))
data, addr = s.recvfrom(1024)
print("收到:", data.decode())

UDP 无连接,不保证可靠但更快,常用于实时音视频传输等。


15.3 HTTP 编程


15.3.1 requests 库发送 HTTP 请求

示例:

import requests

resp = requests.get("https://httpbin.org/get")
print("状态码:", resp.status_code)
print("响应JSON:", resp.json())

✅ requests 使用简单且功能强劲,是最常用的 HTTP 客户端库。


15.3.2 http.server 模块创建简单HTTP服务

示例:

from http.server import SimpleHTTPRequestHandler, HTTPServer

server = HTTPServer(("127.0.0.1", 8080), SimpleHTTPRequestHandler)
print("启动服务器 http://127.0.0.1:8080")
server.serve_forever()

会自动将当前目录作为静态网站根目录。


15.4 使用 Flask 构建 Web 应用


15.4.1 安装与基本应用

安装:

pip install flask

示例:

from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello Flask!"

@app.route("/greet")
def greet():
    name = request.args.get("name", "Guest")
    return f"Hello {name}!"

if __name__ == "__main__":
    app.run(debug=True)

启动后访问:

  • http://127.0.0.1:5000/
  • http://127.0.0.1:5000/greet?name=Alice

15.4.2 返回 JSON API

示例:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/data")
def get_data():
    return jsonify({"status": "ok", "data": [1,2,3]})

if __name__ == "__main__":
    app.run()

你可以用浏览器或 requests.get() 测试这个 API。


15.5 小结

技术

用途

socket

底层网络通信(TCP/UDP)

requests

发送 HTTP 请求

http.server

快速搭建简易 HTTP 服务

Flask

构建 Web 应用 / REST API

✅ 掌握网络编程后,你就能实现 爬虫、接口、Web 网站、实时通信 等复杂项目。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...