#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 взята на исходном компьютере