Python实现常见网络通信的示例详解!
Python实现常见网络通信的示例详解!
作者:ak啊
这篇文章主要为大家详细介绍了Python实现常见网络通信的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴就跟随小编一起学习一下吧。
一、HTTP/HTTPS 通信
1. 客户端示例(requests 库)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import requests # HTTP GET response = requests.get( 'http://httpbin.org/get' ) print (response.text) # HTTPS POST response = 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, request app = 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 socket server = 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 socket client = 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 asyncio import websockets async 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 asyncio import websockets async 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, Response app = 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 requests from sseclient import SSEClient url = '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元,即可下载本站文章涉及的文件和软件。
共有 0 条评论