В настоящее время подключены к 2 отдельным сетям, одна Ethernet и одна беспроводная.Как определить, в какую сеть sendto()
отправляется сообщение?
В настоящее время используется следующий базовый код, вызывающий проблемы:
BROADCAST_IP = "224.0.2.60"
BROADCAST_PORT = 4445
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
msg = "Testing"
sock.sendto(msg, (BROADCAST_IP, BROADCAST_PORT))
Когда я запускаю пример, кажется, что IP используется только через Ethernetсоединение, но не беспроводное.
Вкратце, код исправляется через сервер с использованием выделенного адреса многоадресной рассылки.
Полный код здесь
import socket
import time
servers = [
["Testing a server :) [Test broadcast]", 25565]
]
BROADCAST_IP = "224.0.2.60"
BROADCAST_PORT = 4445
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
print "Broadcasting to specified port"
while 1:
for server in servers:
print("Broadcasting ", len(servers), " connections")
msg = "[MOTD]%s[/MOTD][AD]%d[/AD]" % (server[0], server[1])
sock.sendto(msg, (BROADCAST_IP, BROADCAST_PORT))
time.sleep(1)