网络协议是网络通信的规则与标准,Python网络编程需重点掌握以下协议:
socket模块实现套接字的创建与管理,是网络编程的核心工具。Python提供内置模块与第三方库简化网络编程,核心如下:
socket模块:低级网络接口,支持TCP/UDP通信,需手动处理连接、数据收发等细节(如创建套接字、绑定地址、监听连接)。requests库:第三方HTTP客户端库,简化HTTP请求的发送(如GET、POST),返回JSON格式响应,比内置urllib更易用。Flask框架:轻量级Web框架,用于快速构建Web应用,支持路由(如@app.route('/'))、请求处理(如request.get_json()),适合开发RESTful API。http.server模块:内置HTTP服务器模块,用于创建简单的Web服务器,无需额外依赖,适合测试或小型静态网站。TCP通信需先建立连接(三次握手),再传输数据,适合可靠传输场景。
TCP服务器:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)(AF_INET表示IPv4,SOCK_STREAM表示TCP);server_socket.bind(('localhost', 8080))(localhost为本机IP,8080为端口);server_socket.listen(5)(5为最大等待连接数);client_socket, addr = server_socket.accept()(返回客户端套接字与地址);data = client_socket.recv(1024)(接收最多1024字节数据)、client_socket.sendall(b'Hello, Client!')(发送字节数据);client_socket.close()、server_socket.close()。TCP客户端:
client_socket.connect(('localhost', 8080));UDP无需建立连接,直接发送数据,适合实时应用。
UDP服务器:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);data, addr = server_socket.recvfrom(1024)(返回数据与客户端地址);server_socket.sendto(b'Hello, Client!', addr)(向指定地址发送数据)。UDP客户端:
client_socket.sendto(b'Hello, Server!', ('localhost', 8080));requests库简化了HTTP请求的发送,常用方法如下:
import requests
response = requests.get('https://httpbin.org/get') # 发送GET请求
print(f"状态码: {response.status_code}") # 200表示成功
print(f"响应内容: {response.json()}") # 解析JSON响应
data = {'name': 'Alice', 'age': 25}
response = requests.post('https://httpbin.org/post', json=data) # 发送JSON数据
print(f"响应内容: {response.json()}")
Flask通过路由(@app.route)处理HTTP请求,示例:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/') # 根路径GET请求
def home():
return 'Hello, World!' # 返回字符串响应
@app.route('/api/data', methods=['GET', 'POST']) # 支持GET/POST的API路径
def api_data():
if request.method == 'POST':
data = request.get_json() # 获取JSON请求体
return jsonify({"message": "数据接收成功", "data": data}) # 返回JSON响应
else:
return jsonify({"message": "GET请求成功", "data": "示例数据"})
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000) # 启动服务器(调试模式、监听所有IP、5000端口)
掌握基础后,可进一步学习:
threading(多线程)、multiprocessing(多进程)或asyncio(异步IO)提升服务器并发能力,处理多个客户端请求。ssl模块实现套接字加密(HTTPS),防止数据泄露;学习身份验证(如JWT)、授权机制。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。