#python #python-2.7 #sockets #netlink
Вопрос:
import os import socket import struct ... s = socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, socket.NETLINK_ROUTE) s.bind((os.getpid(), RTMGRP_IPV4_IFADDR)) while True: data = s.recv(65535) msg_len, msg_type, flags, seq, pid = struct.unpack("=LHHLL", data[:16]) ... # dump data in hex
Я хотел бы напечатать первые 64 байта данных, print data
возвращает мусор, я думаю, это потому, что данные нужно распаковать?
Я тоже пытался ' '.join(str(x) for x in s[:len(s)])
, но это тоже не помогает. Каков был бы правильный способ сброса данных, считанных из netlink
сокета?
Комментарии:
1. Самый простой способ-это сказать
data[:64].encode('hex')
. Это работает только для Python 2.2. @js-on
data
уже являетсяbytes
строкой, поэтому ее не нужно кодировать. Просто сделайdata[:64].hex()
3. @TimRoberts, спасибо за помощь.