Как отправить адрес MA C в кадре из шлюза в узел на языке python - PullRequest
0 голосов
/ 19 февраля 2020
import socket
import time
import uuid

port=5000
msg= "Hello, World!"
def initSocket():
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    print("Socket is Created")
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    #BLANK_ADDR = '\x00\x00\x00\x00\x00\x00'

    mac=hex(uuid.getnode())
    mac=mac[2:len(mac)-1]

    #print(hex(mac))
    print (mac)
    nodeId='000000000000ffff'
    #TX_FRAME = '\x7E' + '\x00\x00' + '\x90' + BLANK_ADDR + '\x0A' + '\x00'
    TX_FRAME = '\x7E' + '\x00\x00' + '\x90' + mac + '\x0A' + '\x00'
    #s.sendto(TX_FRAME, ('<broadcast>', port))
    while True:
        s.sendto(TX_FRAME, ('<broadcast>', port))
        print"message sent!",TX_FRAME.upper()
        #s.sendto(TX_FRAME, (ip, port))
        #print"message sent!"
        #data, addr = s.recvfrom(1024) # buffer size is 1024 bytes
        #print "data",data.encode('hex').upper()
        #print "data",data
        time.sleep(10)
initSocket()

'выводит прямо сейчас кадр, когда он получен устройством, он получает 18 бит, который должен быть 12'

'Socket is Created'

'b827eb0d6d79'

'сообщение отправлено! ~ 8B827EB0D6D79 '

' Текстовый кадр отправляется от шлюза (сервера), полученного узлом (клиентом), но когда клиент обрабатывает кадр, он становится 18 байтами вместо 12 байтов, так что делать в преобразовании ma c чтобы отправить его в 12 байтах

...