[英]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.