繁体   English   中英

Python socket监听具体接口

[英]Python socket listening to specific interface

我目前有一个树莓派,它被设置为一个 wifi 到 ethe.net 网桥。 树莓派充当我拥有的整个 ethe.net su.net 的访问点。 su.net 和 the.network 网桥工作完美,但是当我尝试让我的 python 程序在树莓派上监听 ethe.net 接口/su.net 上的请求时,它似乎并没有这样做。 它设置为将套接字绑定到('',10000)但它从不接收任何消息。 但是,它可以通过 sockets 向 su.net 发送消息,只是收不到。 我认为它正在监听 wifi 接口而不是 ethe.net 接口,但我不确定如何指定套接字应该监听哪个接口。

这是我的接收码

receive_group = ('',10000)
receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

receive.bind(receive_group)

while(True):
   data, address = receive.recv(65536)
   print(data)

绑定部分应该是正确的。 接收部分是错误的,因为recv只返回(字节)数据,你应该使用recvfrom来获取发件人地址。 但这应该有效:

import socket
receive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
receive.bind(('', 10000))
while True:
    data, address = receive.recvfrom(64)
    print(data, address)

我将此代码用于发送部分:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(b'foo', (addr, 10000))

其中 addr 是接收器的(可达)地址之一,并且接收器可以从其任何接口成功接收数据。

要从socket.recv获取某些东西,必须连接到这个套接字并发送一些东西。 您确定网络上的某些程序正在执行此操作吗?

要监听/嗅探数据包和网络流量,最好使用pyshark

事实证明它与 python 无关。当我在 pi 上创建接入点时,它创建了一个防火墙规则来阻止该端口,即使我从未以这种方式配置防火墙。 向该端口添加异常解决了我的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM