python - 在Linux Mint系统上运行的应用程序未收到udp数据包

标签 python linux sockets networking udp

我的本地网络上有一个ESP8266,它向端口12345上的全局广播地址(192.168.1.255)发送小型定期UDP数据包。
对于python3 udp接收器代码,我具有以下内容:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 12345))

while True:
    print("Server is listening...")
    print(s.recvfrom(4096))
    data, addr = s.recvfrom(4096)
    if data :
      print ("Message: ", data)
当我在Rasberry Pi(运行Raspian Buster)上运行此代码时,我按预期看到了来自ESP8266的数据包。当我在运行Linux Mint的计算机上运行相同的代码时,它什么也没收到。
我还在Linux计算机上使用过tcpdump,它确实显示了UDP数据包。
nate ~/python/udpSever $sudo tcpdump -v -n port 12345
tcpdump: listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:47:00.068937 IP (tos 0x0, ttl 128, id 4, offset 0, flags [none], proto UDP (17), length 38)
    192.168.1.14.55555 > 192.168.1.255.12345: UDP, length 10
我尝试过使用UDP接收程序的node.js代码进行相同的练习,结果相同:在RasPi上工作,在Linux Mint计算机上不工作(未显示node.js代码,不要认为它在此处添加了任何内容)。
我在Linux Mint计算机上没有安装防火墙或防病毒软件。
-我认为python UDP接收器代码有效,因为它可在RasPi上使用。
-我确信Linux计算机实际上正在接收UDP数据包,因为我可以在该计算机上用tcpdump命令看到它们。
有什么想法可以阻止UDP数据包到达Linux Mint计算机上的python程序(应用程序级别?)吗?
是否有任何命令行程序可以帮助诊断此问题?
我的用户需要启用某些特定权限吗?

最佳答案

在网上搜索了一小段之后,我发现了> itables <,它们是Linux OS的一部分。

sudo iptables -t filter  --list
给我列出规则和链条。在查看了神秘的输出之后,我终于找到了一条规则,该规则似乎暗示它会阻止UDP广播数据包,删除该规则,现在一切正常! ew!
不知道该规则是如何到达那里的,但这是在我的第一个Linux机器(也许是2014年开始..)上的Linux计算机上。多年来,随着我了解如何做很多“键盘上的猴子”式的事情使用Linux,并不断发现奇怪的设置/事物,因为我对操作系统有了更好的了解,现在我无法真正解释这些设置/事物。

关于python - 在Linux Mint系统上运行的应用程序未收到udp数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62943561/

相关文章:

linux - SES 不允许验证

python - 当尝试打破 Python 3 中的 "receive"循环时,服务器套接字应用程序变成无限循环

java - 通过java套接字发送字符串和图片: server not receiving string or picture from android client

python : Allowing methods not specifically defined to be called ala __getattr__

python - 从函数返回字符串和整数

python - 如何根据python中的阈值从数组中提取子数组?

python - 为什么只打印横幅,并在结果上挂起/超时? --Python3(套接字,sys)

javascript - 执行使用 python smtplib 发送的电子邮件的 Javascript

linux - Zynq 设备 (Zybo) 上的嵌入式 Linux 意外崩溃

linux - 减少读取许多小文件时的查找时间