python отправляет udp — пакет-не всегда отправляется

#python #sockets

Вопрос:

Я пытаюсь отправлять повторяющиеся сообщения — одно каждые 0,5 секунды, а другое каждые секунду. При выполнении приведенного ниже кода он не запускается — я не вижу его в wireshark.

Есть идеи, как это сделать?

 import socket 
import time

sock1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

LOCAL_IP = "1.1.1.1"
DST_IP1 = "224.1.1.1"
DST_PORT1 = 12345

DST_IP2 = "225.1.1.1"
DST_PORT2 = 22345

data1 = b'x11x22'
data1 = data1   bytearray(30)

PERIOD = 500

Day=18


def updateTime(some inputs):
    some proccess
    
    return day

while True:
    Day = updateTime(Day)
    
    msg1=data1   struct.pack('!B',Day)  
    msg2 = "some strings"   f'{Day:02d}'   "some more string"
    
    basetime = datetime.now()
    updated_time = datetime.now()
    D = updated_time - basetime
    
    while D.seconds < 1:
        sock1.sendto(msg1,(DST_IP1, int(DST_PORT1))
        time.sleep(int(PERIOD)/1000.0)
        updated_time = datetime.now()
        D = updated_time - basetime
    
    sock2.sendto(msg2,(DST_IP2, int(DST_PORT2))
    
 

Комментарии:

1. UDP не является надежным протоколом. У него нет никакой повторной передачи, гарантии доставки, контроля перегрузки и т.д., Как у TCP. Я не уверен, объясняет ли это то, что вы видите, но, тем не менее, вы должны знать, что потеря пакетов-это законная ситуация, и если вы используете UDP, вам необходимо разработать протокол, который будет ее обрабатывать.

2. @jurez, метка wireshark взята на исходном компьютере