python - struct.error : argument for's' must be a bytes object

标签 python sockets object byte ip-address

通过使用以下代码:

import socket, struct, fcntl

SIOCSIFADDR = 0x8916

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def setIpAddr(iface, ip): 
    bin_ip = socket.inet_aton(ip)
    ifreq = struct.pack('16sH2s4s8s', iface, socket.AF_INET, '\x00'*2, bin_ip,'\x00'*8)
    fcntl.ioctl(sock, SIOCSIFADDR, ifreq)

setIpAddr('em1', '192.168.0.1')

我收到

"struct.error: argument for's' must be a bytes object"



这里是哪个对象?

最佳答案

在字符串前面加上b,使它们成为字节,例如:

ifreq = struct.pack('16sH2s4s8s', iface, socket.AF_INET, b'\x00' * 2, bin_ip, b'\x00' * 8)

setIpAddr(b'em1', '192.168.0.1')

关于python - struct.error : argument for's' must be a bytes object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48394741/

相关文章:

python - 在 Ubuntu 上安装 wxpython 时的严重错误

Python 单元测试设置函数 'is not defined'

python - 有没有办法通过 python 将任务删除到 Windows 任务计划程序?

php - fsockopen()超时有时不起作用

python - 通过套接字的 python 交互式控制台没有换行符

java - 为一个对象替换多个变量?

python - Airflow DAG - 如何先检查 BQ(必要时删除)然后运行数据流作业?

node.js - 使用 Socket.io 而不是普通的 ajax 调用会阻止服务器耗尽 TCP 套接字吗?

java - 具有不同数据类型的数组,即字符串和整数。 (面向对象)

javascript - 从嵌套对象的属性生成代码字符串