如何将套接字绑定到python中的接口(socket.SO_BINDTODEVICE丢失) [英] How to bind socket to an interface in python (socket.SO_BINDTODEVICE missing)
问题描述
这大概是一件很简单的事情.我是 python 新手,所以不要把我钉在十字架上.
This is probably a very simple thing. I'm new to python so don't crucify me.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, "eth1"+' ')
上面的命令给了我:
NameError: name 'IN' is not defined
我唯一的导入是
import socket
推荐答案
如果您不理解错误消息,则意味着您所引用的名称 IN
在当时不可用.您的代码片段可能缺少 import 语句.
If you don't understand the error message, it means you're referring a name IN
which is not available at that point. Your code snippet is likely missing an import statement.
出于可移植性的原因,套接字模块可能不提供 SO_BINDTODEVICE.如果您绝对确定您在支持它的 Linux 上运行,请尝试将其替换为它的数值,即 25
:
The socket module may not offer SO_BINDTODEVICE for portability reasons. If you are absolutely sure that you're running on Linux that supports it, try replacing it with it's numerical value, which is 25
:
s.setsockopt(socket.SOL_SOCKET, 25, "eth1"+' ')
或者对于python 3:
Or for python 3:
s.setsockopt(socket.SOL_SOCKET, 25, str("eth1" + ' ').encode('utf-8'))
这篇关于如何将套接字绑定到python中的接口(socket.SO_BINDTODEVICE丢失)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!