我编写了一个简单的电报机器人,它运行良好,不会与我的防火墙发生冲突。但我的问题是,在防火墙中,我的站点允许使用端口 80 和 443,但是当我用 Python 编写一个应该通过端口 443 或端口 80 工作的 TCP 套接字时,操作系统告诉我需要运行the program from the user's root
,但是如果我启动机器人,那么操作系统根本不会宣誓权利,并且机器人会安静地工作。如果我仍然决定在端口 443 或 80 上运行套接字,则操作系统会回复that these ports are busy
。
那么,请向我解释一下为什么电报机器人不会与进程和端口冲突?
我的服务器是Ubuntu 22.04
答案1
据我了解,电报机器人 API通过机器人制作工作外向的HTTPS 请求(发送到远程端口 443),与您的 Web 浏览器相同。这样做通常没有任何限制。
另一方面,接受传入HTTP/HTTPS 请求需要绑定到本地端口 80 和 443,而绑定到低于 1024 的端口在许多 Unix-like 系统中仅限于 root。
如果您在绑定到本地端口时收到“地址已在使用”错误(或类似错误),那么您可能已经有另一个程序在使用该端口,例如 80 和 443 的情况下可能是 Web 服务器。
(我不太确定您正在做什么的详细信息,因为问题中没有显示代码,而且我怀疑错误消息也不准确。)