2024-09-27 21:29:16 发布
网友
这可能是一件很简单的事情。 我对Python还不熟悉,所以别把我钉死。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth1"+'\0')
上面的命令给了我:
NameError: name 'IN' is not defined
我唯一需要的是
import socket
如果您不理解错误消息,则表示您所指的名称IN在此时不可用。您的代码片段可能缺少import语句。
IN
出于可移植性的原因,套接字模块可能不提供sou BINDTODEVICE。如果您完全确定您在支持它的Linux上运行,请尝试将其替换为数值,即25:
25
s.setsockopt(socket.SOL_SOCKET, 25, "eth1"+'\0')
或者对于python 3:
s.setsockopt(socket.SOL_SOCKET, 25, str("eth1" + '\0').encode('utf-8'))
在Python中,SO_BINDTODEVICE存在于IN模块中。导入IN将解决问题。
Python
SO_BINDTODEVICE
import socket import IN sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth0")
您甚至可以“导出”缺少的选项:
if not hasattr(socket,'SO_BINDTODEVICE') : socket.SO_BINDTODEVICE = 25
那么
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BINDTODEVICE, interface+'\0')
如果您不理解错误消息,则表示您所指的名称
IN
在此时不可用。您的代码片段可能缺少import语句。出于可移植性的原因,套接字模块可能不提供sou BINDTODEVICE。如果您完全确定您在支持它的Linux上运行,请尝试将其替换为数值,即
25
:或者对于python 3:
在
Python
中,SO_BINDTODEVICE
存在于IN
模块中。导入IN
将解决问题。您甚至可以“导出”缺少的选项:
那么
相关问题 更多 >
编程相关推荐