Здравствуйте!
Пытаюсь принимать широковещательный UDP трафик (маска /24, .255). При этом адрес источника такой же — .255. И wireshark на винде, и tcpdump на линуксе показывают одно и то же. Это вообще нормально?
При этом моя линуксовая софтина в упор не видит этот трафик (читаю питоновскими 2.7 сокетами). Есть также софт эмулятор источника трафика, под винду. С него трафик идет с конкретного адреса, и моя софтина его нормально читает.
Где может быть проблема? В линуксе, в питоновских сокетах? Или то, что адрес источника равен адресу назначения — 192.168.0.255 для линукса и питона рояли не играет, и проблема где-то у меня?
# создаются сокеты как-то так:
def add_sock(address):
try:
sk = socket(AF_INET, SOCK_DGRAM)
sk.bind(address)
except Exception as e:
print 'Error: can\'t init socket: %s' % e
sys.exit(1)
sockets.append(sk)
sock_num[sk] = add_sock.num # Channel ID
add_sock.num += 1
# чтение реализовано так:
rx, tx, xx = select(sockets, [], [], 10.0)
for sk in rx:
pkt, addr = sk.recvfrom(mtu)
...
PS mtu определяется ранее и в итоге равно 1472. При этом длина пакетов, которые принимаются нормально — 1488, длина пакетов, которые не принимаются — 1420