Python实现常见网络通信的示例详解!
Python实现常见网络通信的示例详解!
作者:ak啊
这篇文章主要为大家详细介绍了Python实现常见网络通信的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴就跟随小编一起学习一下吧。
一、HTTP/HTTPS 通信
1. 客户端示例(requests 库)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import requests# HTTP GETresponse = requests.get('http://httpbin.org/get')print(response.text)# HTTPS POSTresponse = requests.post('https://httpbin.org/post',data={'key': 'value'},verify=True # 验证 SSL 证书(默认))print(response.json()) |
2. 服务端示例(Flask)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from flask import Flask, requestapp = Flask(__name__)@app.route('/api', methods=['GET', 'POST'])def handle_request():if request.method == 'GET':return {'message': 'GET received'}elif request.method == 'POST':return {'data': request.json}if __name__ == '__main__':app.run(ssl_context='adhoc') # 启用 HTTPS |
二、UDP 通信
1. 服务端
|
1
2
3
4
5
6
7
8
9
|
import socketserver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)server.bind(('0.0.0.0', 9999))while True:data, addr = server.recvfrom(1024)print(f"Received from {addr}: {data.decode()}")server.sendto(b'UDP response', addr) |
2. 客户端
|
1
2
3
4
5
6
|
import socketclient = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)client.sendto(b'Hello UDP', ('localhost', 9999))response, addr = client.recvfrom(1024)print(f"Received: {response.decode()}") |
三、WebSocket 通信
需要安装库:pip install websockets
1. 服务端
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import asyncioimport websocketsasync def handler(websocket):async for message in websocket:print(f"Received: {message}")await websocket.send(f"Echo: {message}")async def main():async with websockets.serve(handler, "localhost", 8765):await asyncio.Future() # 永久运行asyncio.run(main()) |
2. 客户端
|
1
2
3
4
5
6
7
8
9
10
|
import asyncioimport websocketsasync def client():async with websockets.connect("ws://localhost:8765") as ws:await ws.send("Hello WebSocket!")response = await ws.recv()print(f"Received: {response}")asyncio.run(client()) |
四、Server-Sent Events (SSE)
需要安装库:pip install sseclient-py
1. 服务端(Flask 实现)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from flask import Flask, Responseapp = Flask(__name__)@app.route('/stream')def stream():def event_stream():for i in range(5):yield f"data: Message {i}\n\n"return Response(event_stream(), mimetype="text/event-stream")if __name__ == '__main__':app.run() |
2. 客户端
|
1
2
3
4
5
6
7
8
9
|
import requestsfrom sseclient import SSEClienturl = 'http://localhost:5000/stream'response = requests.get(url, stream=True)client = SSEClient(response)for event in client.events():print(f"Received event: {event.data}") |
关键点说明
- HTTP/HTTPS:最常用的请求-响应模型
- UDP:无连接协议,适合实时性要求高的场景
- WebSocket:全双工通信协议,适合实时双向通信
- SSE:服务器到客户端的单向推送技术
- 安全建议:
- HTTPS 使用 requests 的
verify=True验证证书 - WebSocket 使用
wss://安全协议 - 生产环境应使用正式 SSL 证书
- HTTPS 使用 requests 的
根据具体需求选择协议:
- 简单数据请求:HTTP/HTTPS
- 实时游戏/视频:UDP
- 聊天应用:WebSocket
- 实时通知:SSE
建议根据实际场景配合使用异步框架(如 aiohttp、FastAPI)以获得更好的性能。
到此这篇关于Python实现常见网络通信的示例详解的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

