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 证书

根据具体需求选择协议:

  • 简单数据请求:HTTP/HTTPS
  • 实时游戏/视频:UDP
  • 聊天应用:WebSocket
  • 实时通知:SSE

建议根据实际场景配合使用异步框架(如 aiohttp、FastAPI)以获得更好的性能。

到此这篇关于Python实现常见网络通信的示例详解的文章就介绍到这了。

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

Excelbook.cn Excel技巧 SQL技巧 Python 学习!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>