2024-04-20 12:02:22 发布
网友
我希望在只使用python标准库的接口上获得活动的esid;我只需要支持Linux环境。我该怎么做?在
这可以使用^{}^{}调用来完成。在
这段代码看起来有点令人困惑,因为它更像是在C代码中而不是Python中看到的东西,但是它的工作原理是首先以Python数组的形式分配一些内存(我们将在其中放置esid),然后执行一个ioctl调用,该调用将数组修改到位。在
ioctl
import array import fcntl import socket import struct sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) maxLength = { "interface": 16, "essid": 32 } calls = { "SIOCGIWESSID": 0x8B1B } def getESSID(interface): """Return the ESSID for an interface, or None if we aren't connected.""" essid = array.array("c", "\0" * maxLength["essid"]) essidPointer, essidLength = essid.buffer_info() request = array.array("c", interface.ljust(maxLength["interface"], "\0") + struct.pack("PHH", essidPointer, essidLength, 0) ) fcntl.ioctl(sock.fileno(), calls["SIOCGIWESSID"], request) name = essid.tostring().rstrip("\0") if name: return name return None
这可以使用^{} ^{} 调用来完成。在
这段代码看起来有点令人困惑,因为它更像是在C代码中而不是Python中看到的东西,但是它的工作原理是首先以Python数组的形式分配一些内存(我们将在其中放置esid),然后执行一个
ioctl
调用,该调用将数组修改到位。在相关问题 更多 >
编程相关推荐