Как получить маску su bnet хотя Python? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу отправить широковещательное сообщение по сети, используя Python. У меня есть код для нахождения IP-адреса моего компьютера, и я знаю, как рассчитать широковещательный IP-адрес с учетом IP-адреса и маски su bnet, но я не могу понять, как получить маску su bnet в первом место. Я просмотрел модули socket и ipaddress, но не смог найти ничего, что дало бы мне то, что я хочу (не сказать, что его не существует!). Вот что у меня есть, если это поможет.

import socket

hostname = socket.gethostname()
IP = socket.gethostfromname(hostname)

if IP.startswith('192.168') == True:
    Sub = '255.255.0.0'
else:
    Sub = '255.255.255.0'

def get_ID(ip, mask):
    ip = ip.split('.')
    mask = mask.split('.')
    ip = [int(bin(int(octet)), 2) for octet in ip]
    mask = [int(bin(int(octet)), 2) for octet in mask]
    broadcast = [(ioctet | ~moctet) & 0xff for ioctet, moctet in zip(ip, mask)]
    broadcast = str(broadcast[0]) + '.' + str(broadcast[1]) + '.' + str(broadcast[2]) + '.' + str(broadcast[3])
    return broadcast

broadcastaddr = get_ID(IP, Sub)

Если бы у меня был надежный способ получить маску su bnet, на обычном компьютере это было бы гораздо менее вероятным.

...