这可能是一件非常简单的事情。我是python的新手,所以不要钉死我。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth1"+'\0')
Run Code Online (Sandbox Code Playgroud)
上面的命令给了我:
NameError: name 'IN' is not defined
Run Code Online (Sandbox Code Playgroud)
我唯一的进口是
import socket
Run Code Online (Sandbox Code Playgroud)
如果您不理解该错误消息,则表示您引用的是IN当时不可用的名称。您的代码段可能缺少导入语句。
出于可移植性的原因,套接字模块可能不提供SO_BINDTODEVICE。如果您完全确定自己在支持它的Linux上运行,请尝试用它的数字值替换它25:
s.setsockopt(socket.SOL_SOCKET, 25, "eth1"+'\0')
Run Code Online (Sandbox Code Playgroud)
或对于python 3:
s.setsockopt(socket.SOL_SOCKET, 25, str("eth1" + '\0').encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)