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:无连接协议,适合实时性要求高的场景
  • WebSocket:全双工通信协议,适合实时双向通信
  • SSE:服务器到客户端的单向推送技术
  • 安全建议
    • HTTPS 使用 requests 的 verify=True 验证证书
    • WebSocket 使用 wss:// 安全协议
    • 生产环境应使用正式 SSL 证书

根据具体需求选择协议:

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

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

到此这篇关于Python实现常见网络通信的示例详解的文章就介绍到这了,更多相关Python网络通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Django模板系统详解

    Python Django模板系统详解

    这篇文章主要介绍Django模板系统Django模板系统的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • Python虚拟环境项目实例

    Python虚拟环境项目实例

    这篇文章主要介绍了Python虚拟环境项目实例步骤,以及遇到的问题解决办法。
    2017-11-11
  • 浅析Python 中的 WSGI 接口和 WSGI 服务的运行

    浅析Python 中的 WSGI 接口和 WSGI 服务的运行

    这篇文章主要介绍了Python 中的 WSGI 接口和 WSGI 服务的相关资料,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

    python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

    这篇文章主要介绍了python opencv 图像边框(填充)添加及图像混合(末尾实现类似幻灯片渐变的效果),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 解决PyCharm中光标变粗的问题

    解决PyCharm中光标变粗的问题

    下面小编就为大家带来一篇解决PyCharm中光标变粗的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • pyMySQL SQL语句传参问题,单个参数或多个参数说明

    pyMySQL SQL语句传参问题,单个参数或多个参数说明

    这篇文章主要介绍了pyMySQL SQL语句传参问题,单个参数或多个参数说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • PyQt5基本控件使用详解:单选按钮、复选框、下拉框

    PyQt5基本控件使用详解:单选按钮、复选框、下拉框

    这篇文章主要介绍了PyQt5基本控件使用:单选按钮、复选框、下拉框,本文中的内容和实例也基本回答了开篇提到的问题。需要的朋友可以参考下
    2019-08-08
  • Python操作MySQL数据库的简单步骤分享

    Python操作MySQL数据库的简单步骤分享

    这篇文章主要给大家介绍了关于Python操作MySQL数据库的简单步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python入门教程(四十一)Python的NumPy数组索引

    Python入门教程(四十一)Python的NumPy数组索引

    这篇文章主要介绍了Python入门教程(四十一)Python的NumPy数组索引,数组索引是指使用方括号([])来索引数组值,numpy提供了比常规的python序列更多的索引工具,除了按整数和切片索引之外,数组可以由整数数组索引、布尔索引及花式索引,需要的朋友可以参考下
    2023-05-05
  • Python 迭代器Iterator详情

    Python 迭代器Iterator详情

    这篇文章主要介绍了Python 迭代器Iterator详情,迭代器可以帮助我们解决面对复杂的数据场景时,快速简便的获取数据,下文关于其详细介绍,需要的小伙伴可以参考一下
    2022-05-05

最新评论