You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18系统下普通用户运行Python套接字监听程序无法接收数据的问题排查咨询

Ubuntu 18系统下普通用户运行Python套接字监听程序无法接收数据的问题排查咨询

各位大佬好,我在Ubuntu 18系统上碰到了一个挺费解的套接字问题,这个系统之前的配置情况我不太清楚,现在卡在这里了想请教下大家。

我写了一段Python的TCP监听代码,用的是12345端口(已经超过了系统1024的特权端口限制),当我以普通用户身份运行这段代码时:

import socket

host = '0.0.0.0'  # 实际代码里配置了对应的监听地址
port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(5)
# 后续的accept和recv逻辑都是正常的,但就是收不到数据

程序完全没有报错,能成功绑定端口,我用netstat或者ss命令查,也能看到这个端口处于LISTEN状态,nmap扫描本地或者远程也能看到端口是开放的。但是不管我从本地还是其他机器往这个端口发数据,程序就是接收不到任何内容。

奇怪的是,如果我切换到root身份运行同一段代码,就能正常接收数据,完全没问题。而且我已经确认系统的防火墙是禁用状态,排除了防火墙拦截的可能。

现在我实在搞不懂是系统的哪项配置导致了普通用户和root用户的差异,有没有大佬能指点一下可能的排查方向或者常见的原因?

备注:内容来源于stack exchange,提问作者eng3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:29:40