如何将套接字绑定到python中的接口(socket.SO_BINDTODEVICE丢失) [英] How to bind socket to an interface in python (socket.SO_BINDTODEVICE missing)

查看:32
本文介绍了如何将套接字绑定到python中的接口(socket.SO_BINDTODEVICE丢失)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这大概是一件很简单的事情.我是 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆