簡體   English   中英

如何拆分、發送和合並 UDP?

[英]How can I split, send and combine UDP?

我想使用以下代碼進行 udp 通信。

這段代碼是一個示例,實際代碼中的msg變量超過10000字節。

UDP發送文件

from socket import socket, AF_INET, SOCK_DGRAM

HOST = ''
PORT = 5000
ADDRESS = "127.0.0.1"

s = socket(AF_INET, SOCK_DGRAM)
# s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

count = 0
while True:
    msg = 'print("udp_start")\n'
    msg += 'value='+str(count)+'\n'
    msg += 'if value == 100:\n'
    msg += '    print("value is 100")\n\n'
    s.sendto(msg.encode(), (ADDRESS, PORT))
    count = count + 1 
s.close()

UDP接收文件

from socket import socket, AF_INET, SOCK_DGRAM

HOST = ''   
PORT = 5000

s = socket(AF_INET, SOCK_DGRAM)
s.bind((HOST, PORT))

while True:
    msg, address = s.recvfrom(8192)
    exec(msg.decode('utf-8'))

s.close()

https://qiita.com/akakou/items/e9fbcfc0c69cc957152e

我想發送代碼並執行。

另外,由於msg變量太長,可能會出現問題,我想把msg變量拆分成1000到5000字節發送。

我怎樣才能做到這一點?

您不能簡單地在 UDP 中拆分、傳輸和連接數據,因為 UDP 數據包在傳輸過程中可能會丟失、復制和重新排序。 雖然您可能會嘗試在 UDP 之上添加一些(復雜的)可靠性層,但問題是為什么首先使用 UDP 而不是 TCP。 我建議您重新考慮 UDP 或您與 UDP 一起使用的當前設計是否真的是您未知問題的正確選擇,即更多地關注問題而不是您對解決方案的特定想法。 另請參閱XY 問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM