Python實現常見網絡通信的示例詳解
更新時間:2025年04月17日 11:09:05 作者:ak啊
這篇文章主要為大家詳細介紹了Python實現常見網絡通信的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴就跟隨小編一起學習一下吧
一、HTTP/HTTPS 通信
1. 客戶端示例(requests 庫)
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)
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. 服務端
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. 客戶端
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. 服務端
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. 客戶端
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 實現)
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. 客戶端
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:無連接協(xié)議,適合實時性要求高的場景
- WebSocket:全雙工通信協(xié)議,適合實時雙向通信
- SSE:服務器到客戶端的單向推送技術
- 安全建議:
- HTTPS 使用 requests 的
verify=True驗證證書 - WebSocket 使用
wss://安全協(xié)議 - 生產環(huán)境應使用正式 SSL 證書
- HTTPS 使用 requests 的
根據具體需求選擇協(xié)議:
- 簡單數據請求:HTTP/HTTPS
- 實時游戲/視頻:UDP
- 聊天應用:WebSocket
- 實時通知:SSE
建議根據實際場景配合使用異步框架(如 aiohttp、FastAPI)以獲得更好的性能。
到此這篇關于Python實現常見網絡通信的示例詳解的文章就介紹到這了,更多相關Python網絡通信內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mac安裝python3后使用pip和pip3的區(qū)別說明
這篇文章主要介紹了mac安裝python3后使用pip和pip3的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
python類的方法屬性與方法屬性的動態(tài)綁定代碼詳解
這篇文章主要介紹了python類的方法屬性與方法屬性的動態(tài)綁定代碼詳解,具有一定借鑒價值,需要的朋友可以參考下2017-12-12

