当前位置: 首页 > 面试题库 >

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

柯英奕
2023-03-14
问题内容

这可能是一件非常简单的事情。我是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当时不可用的名称。您的代码段可能缺少导入语句。

出于可移植性的原因,套接字模块可能不提供SO_BINDTODEVICE。如果您完全确定自己在支持它的Linux上运行,请尝试用它的数字值替换它25

s.setsockopt(socket.SOL_SOCKET, 25, "eth1"+'\0')

或对于python 3:

s.setsockopt(socket.SOL_SOCKET, 25, str("eth1" + '\0').encode('utf-8'))


 类似资料:
  • 问题内容: 我的应用程序在CentOS 5.5上运行。我正在使用原始套接字发送数据: 如何将此套接字绑定到特定的网络接口(例如eth1)? 问题答案: 第一行:设置变量 第二行:告诉程序绑定到哪个接口 第3-5行:获取接口名称的长度,并检查其大小是否太大。 六行:设置套接字的套接字选项,绑定到设备。 setsockopt原型: 此外,请确保您包括,和头文件

  • 问题内容: 当我在代码中指定要连接的IP时,我有一个小型的单边消息发送器,但是,我无法让套接字接受来自任何IP的连接。这是问题所在。 该是本地主机,如果我手动输入IP,例如,它的工作原理,但是,我怎么能离开它向所有人开放?还是我为此使用了错误的连接类型? 问题答案: 如果要绑定到所有可用的IPv4地址,请指定为IP地址。如果您在路由器后面,并且希望您的套接字可以通过Internet访问,而不是仅在

  • 问题内容: 我目前正在使用 属性启动Java VM,以便可以通过JConsole连接到Java VM 进行管理和监视。不幸的是,它监听计算机上的所有接口(IP地址)。 在我们的环境中,通常情况下,一台机器上同时运行多个Java VM。尽管可以告诉JMX侦听不同的TCP端口(使用),但是最好让JMX使用标准的JMX端口并仅绑定到特定的IP地址(而不是所有IP地址)。 这将使查找通过JConsole连

  • 我有一个python应用程序,它需要为IPv6连接选择一个特定的本地源地址,但可以为IPv4连接使用“any”0.0.0.0。但应用程序在中使用主机名,以允许从名称查找地址。 那么,如果在调用之前我不知道是IPv4地址还是IPv6地址,那么如何将特定的IPv6源地址和IPv4“any”地址绑定到本地套接字? 一定有更好的办法。我怀疑我必须自己实现地址查找和选择,并将地址而不是名称传递给。这样,在进

  • 问题内容: 我正在使用一个守护程序,该守护程序侦听UDP广播数据包,并通过UDP进行响应。当一个包进来,我想知道哪个IP地址(或NIC)的包来到 TO 这样我就可以与该IP地址作为源地址进行响应。(出于很多麻烦的原因,我们系统的某些用户希望将同一台计算机上的两个NIC连接到同一子网。我们告诉他们不要,但是他们坚持要这样做。我不需要提醒我这是多么的丑陋。 ) 似乎没有办法检查数据报并直接找出其目的地

  • 本文向大家介绍Laravel 将接口绑定到实现,包括了Laravel 将接口绑定到实现的使用技巧和注意事项,需要的朋友参考一下 示例 在服务提供者register方法中,我们可以将接口绑定到实现: 从现在开始,每次应用程序需要的实例时UserRepositoryInterface,Laravel都会自动注入的新实例EloquentUserRepository: