欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)常見網(wǎng)絡(luò)通信的示例詳解

 更新時間:2025年04月17日 11:09:05   作者:ak啊  
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)常見網(wǎng)絡(luò)通信的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴就跟隨小編一起學(xué)習(xí)一下吧

一、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 證書(默認(rèn))
)
print(response.json())

2. 服務(wù)端示例(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. 服務(wù)端

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. 服務(wù)端

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()  # 永久運(yùn)行

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. 服務(wù)端(Flask 實現(xiàn))

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}")

關(guān)鍵點(diǎn)說明

  • HTTP/HTTPS:最常用的請求-響應(yīng)模型
  • UDP:無連接協(xié)議,適合實時性要求高的場景
  • WebSocket:全雙工通信協(xié)議,適合實時雙向通信
  • SSE:服務(wù)器到客戶端的單向推送技術(shù)
  • 安全建議
    • HTTPS 使用 requests 的 verify=True 驗證證書
    • WebSocket 使用 wss:// 安全協(xié)議
    • 生產(chǎn)環(huán)境應(yīng)使用正式 SSL 證書

根據(jù)具體需求選擇協(xié)議:

  • 簡單數(shù)據(jù)請求:HTTP/HTTPS
  • 實時游戲/視頻:UDP
  • 聊天應(yīng)用:WebSocket
  • 實時通知:SSE

建議根據(jù)實際場景配合使用異步框架(如 aiohttp、FastAPI)以獲得更好的性能。

到此這篇關(guān)于Python實現(xiàn)常見網(wǎng)絡(luò)通信的示例詳解的文章就介紹到這了,更多相關(guān)Python網(wǎng)絡(luò)通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Django模板系統(tǒng)詳解

    Python Django模板系統(tǒng)詳解

    這篇文章主要介紹Django模板系統(tǒng)Django模板系統(tǒng)的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Python虛擬環(huán)境項目實例

    Python虛擬環(huán)境項目實例

    這篇文章主要介紹了Python虛擬環(huán)境項目實例步驟,以及遇到的問題解決辦法。
    2017-11-11
  • 淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行

    淺析Python 中的 WSGI 接口和 WSGI 服務(wù)的運(yùn)行

    這篇文章主要介紹了Python 中的 WSGI 接口和 WSGI 服務(wù)的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python opencv 圖像邊框(填充)添加及圖像混合的實現(xiàn)方法(末尾實現(xiàn)類似幻燈片漸變的效果)

    python opencv 圖像邊框(填充)添加及圖像混合的實現(xiàn)方法(末尾實現(xiàn)類似幻燈片漸變的效果)

    這篇文章主要介紹了python opencv 圖像邊框(填充)添加及圖像混合(末尾實現(xiàn)類似幻燈片漸變的效果),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 解決PyCharm中光標(biāo)變粗的問題

    解決PyCharm中光標(biāo)變粗的問題

    下面小編就為大家?guī)硪黄鉀QPyCharm中光標(biāo)變粗的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • pyMySQL SQL語句傳參問題,單個參數(shù)或多個參數(shù)說明

    pyMySQL SQL語句傳參問題,單個參數(shù)或多個參數(shù)說明

    這篇文章主要介紹了pyMySQL SQL語句傳參問題,單個參數(shù)或多個參數(shù)說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • PyQt5基本控件使用詳解:單選按鈕、復(fù)選框、下拉框

    PyQt5基本控件使用詳解:單選按鈕、復(fù)選框、下拉框

    這篇文章主要介紹了PyQt5基本控件使用:單選按鈕、復(fù)選框、下拉框,本文中的內(nèi)容和實例也基本回答了開篇提到的問題。需要的朋友可以參考下
    2019-08-08
  • Python操作MySQL數(shù)據(jù)庫的簡單步驟分享

    Python操作MySQL數(shù)據(jù)庫的簡單步驟分享

    這篇文章主要給大家介紹了關(guān)于Python操作MySQL數(shù)據(jù)庫的簡單步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python入門教程(四十一)Python的NumPy數(shù)組索引

    Python入門教程(四十一)Python的NumPy數(shù)組索引

    這篇文章主要介紹了Python入門教程(四十一)Python的NumPy數(shù)組索引,數(shù)組索引是指使用方括號([])來索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,需要的朋友可以參考下
    2023-05-05
  • Python?迭代器Iterator詳情

    Python?迭代器Iterator詳情

    這篇文章主要介紹了Python?迭代器Iterator詳情,迭代器可以幫助我們解決面對復(fù)雜的數(shù)據(jù)場景時,快速簡便的獲取數(shù)據(jù),下文關(guān)于其詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05

最新評論