python - 操作系统错误 : [WinError 10022] An invalid argument was supplied - Windows 10 Python

标签 python windows python-3.x

我目前正在学习 python,来自 java,并且偶然发现了一个我找不到答案的错误。我在 Windows 10 上使用的是最新的 python 版本,尽管我认为我遵循的教程是针对 Linux 的……希望您仍然可以帮助我。这是我的类(class)代码:

def main():
    connection = socket.socket(socket.AF_INET, socket.SOCK_RAW, 
    socket.IPPROTO_IP)

    #mainloop
    raw_data, addr = connection.recvfrom(65536)
    dest_mac, src_mac, eth_proto, data = ethernet_frame(raw_data)
    print('\nEthernet Frame:')
    print('Destination: {}, Source: {}, Protocol: {}'.format(dest_mac, 
    src_mac, eth_proto))

#unpack ethernet frame
def ethernet_frame(data):
    dest_mac, src_mac, proto = struct.unpack('! 6s 6s H', data[:14])

    return get_mac_addr(dest_mac), get_mac_addr(src_mac), 
    socket.htons(proto), data[14:]

#format MAC adress
def get_mac_addr(bytes_addr):
    bytes_str = map('{:02x}'.format, bytes_addr)

    return ':'.join(bytes_str).upper()

main()

执行时我收到以下错误:

OSError: [WinError 10022] An invalid argument was supplied

在“connection.recvfrom(65536)”行中。

这是 Windows 特定的错误吗?

最佳答案

套接字在绑定(bind)或发送数据之前没有地址。在使用 connection.bind((YOUR_IP, PORT)) 调用 connection.recvfrom(65536) 之前绑定(bind)套接字。

关于python - 操作系统错误 : [WinError 10022] An invalid argument was supplied - Windows 10 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330897/

相关文章:

python - 在 python 中等待之前,不会在异步函数中调用打印函数

Python ctypes 和没有足够的参数(缺少 4 个字节)

.net - 如何在显示 UAC 对话框窗口时运行我的应用程序?

python-3.x - Python 中远离零的下限或上限

python - 帮助 Python 方法中的内部循环

python - Python 中的 Mergesort,我的第一个排序算法,哪里出了问题?

python - 没有 modelform 的 Django 表单集无法工作

python - python 2.4 中的 cpuinfo for windows

Python3 - 在 if 条件下使用 for 循环

javascript - 如何使用 Python、JavaScript 或 Robot Framework 和 Selenium 使用部分标题文本导航到新的浏览器窗口