Я разрабатываю приложение, использующее модуль сокета Python для отправки пакетов с UDP. Из-за ограничений регулирования, мне нужно ограничить локальный порт сокета тоже диапазоном. Я пробовал:
def bind_to_port_range(low, high):
m_counter = int(low)
m_high = int(high)
m_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while m_counter <= m_high:
try:
m_socket.bind(("localhost", m_counter))
return m_socket
except:
m_counter += 1
return None
sock = bind_to_port_range(6000, 6050)
if sock:
sock.sendto(my_message, (destination_ip, destination_port))
Используя netstat, я вижу, что порт правильно связывается, но пакет не отправляется в нужное место назначения. Я уверен, что остальная часть моего кода верна, поскольку я не ограничивал порт диапазоном, и он работал просто отлично
# sock = bind_to_port_range(6000, 6050)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Есть что-то, чего мне здесь не хватает? Есть ли способ ограничить диапазон портов отправляющих сокетов, используя UDP таким образом? Спасибо.