Как я могу разделить, отправить и объединить UDP? - PullRequest
0 голосов
/ 24 января 2020

Я хочу установить связь с использованием следующего кода.

Этот код является примером, а переменная msg в фактическом коде длиннее 10 000 байт.

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

Я хочу отправить код и exe c.

Кроме того, поскольку переменная msg слишком длинная и может вызвать проблемы, я хотел бы разделить переменную msg на 1000–5000 байт и отправить ее.

Как я могу это сделать?

1 Ответ

1 голос
/ 24 января 2020

Вы не можете просто разделять, передавать и объединять данные в UDP, поскольку в UDP пакеты могут быть потеряны, дублированы и переупорядочены во время передачи. Хотя вы можете попытаться добавить некоторый (сложный) уровень надежности поверх UDP, возникает вопрос, зачем сначала использовать UDP, а не TCP. Я рекомендую вам переосмыслить, является ли UDP или текущий дизайн, который вы используете с UDP, действительно правильным выбором для вашей неизвестной проблемы, то есть сосредоточиться больше на проблеме, а не на вашей конкретной идее решения. Смотрите также XY проблема .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...