QAQ大佬们,我昨天买的服务器,是windows版的轻量级应用服务器,不过我发现我在防火墙打开了这些端口但外网都无法连接上去,我在服务器里面安装了我自己用QT写的TCP服务端,而且发现客户端无论怎样都连不上服务端(listen的是localhost)。。。。大佬们怎么办啊QAQQQQQQQ
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题出在两个地方,按顺序排查:
监听地址错误(最关键)
你的QT服务端 listen("localhost") 只能接受本机连接!外网根本连不上。
✅ 改成:listen(QHostAddress::Any, port) 或 listen("0.0.0.0", port)
(这样才允许外部IP访问)
阿里云轻量服务器防火墙配置
即使代码改对了,还得在阿里云控制台放行端口:
登录阿里云 → 轻量应用服务器 → 防火墙规则
添加规则:协议选TCP,端口填你用的端口号(如8080),源IP填 0.0.0.0/0(允许所有IP)
保存后生效(通常1分钟内)
Windows系统防火墙
服务器内部也要放行:
控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则
新建规则:端口 → TCP → 特定本地端口(填你的端口)→ 允许连接 → 全选配置文件 → 命名保存
检查服务是否真的在运行
用命令行测试:telnet <你的公网IP> <端口>
如果通,说明网络层没问题;不通再查上面几点。
总结:先改代码监听 0.0.0.0,再去阿里云控制台加防火墙规则,最后确认Windows防火墙也放行。三步搞定,别慌。
官方详细解决方案:https://www.aliyun.com/product/swas
问题核心在于:您的 TCP 服务端监听地址为 localhost(即 127.0.0.1),导致仅接受本机连接,外网无法访问。另外,阿里云轻量应用服务器禁用25端口,且不支持解封。出于安全考虑,25端口不能用于对外发送邮件。如果您有邮件发送需求,建议使用465端口。详细参考官方说明及解决方法:https://www.aliyun.com/product/swas
在您的 Qt 服务端代码中,不要绑定 QHostAddress::LocalHost,而应绑定:
server->listen(QHostAddress::Any, your_port); // 监听 0.0.0.0
这将使服务监听所有网络接口(包括公网 IP)。
⚠️ 若仍绑定
127.0.0.1,即使防火墙和安全组全开放,外网也无法连接。
完成以上三步后,在本地使用 telnet 公网IP 端口 测试连通性。若仍失败,请提供:
netstat -ano | findstr ":端口" 的输出结果;检查您的安全组规则是否开放了对应端口,并确保应用程序在服务器上正确运行
检查您的安全组规则是否开放了对应端口,并确保应用程序在服务器上正确运行。如果有帮助帮忙采纳一下。谢谢。