如何拆分、发送和合并 UDP?

How can I split, send and combine UDP?

我想使用以下代码进行 udp 通信。

此代码为示例,实际代码中的msg变量超过10000字节

UDPSend.py

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()

UDPRecieve.py

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 problem