如何将套接字绑定到python中的接口(缺少socket.SO_BINDTODEVICE)

use*_*499 4 python sockets

这可能是一件非常简单的事情。我是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)

ham*_*ene 6

如果您不理解该错误消息,则表示您引用的是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)