使用Python在两台虚拟机间建立TCP Socket连接失败问题咨询
故障原因及修复方案
核心问题:防火墙放行端口与程序使用端口不匹配
你当前CentOS服务端的firewalld仅放行了1234/tcp端口,但你的Python客户端、服务端均使用7000端口通信,防火墙会默认拦截所有未放行端口的外来TCP请求,这是连接失败的最主要原因。
分步修复操作
第一步:在CentOS服务端放行7000端口并重载防火墙配置
执行以下两条命令:sudo firewall-cmd --add-port=7000/tcp --permanent sudo firewall-cmd --reload执行完成后可运行
sudo firewall-cmd --list-all确认7000/tcp已出现在ports列表中。第二步:确认服务端监听地址配置正确
如果端口放行后仍无法连接,检查你的服务端Python代码,不要将绑定地址设为127.0.0.1/localhost,否则服务端只会监听本地回环请求,外部机器无法访问。正确的绑定配置应该监听所有网卡,示例如下:# 服务端socket绑定示例,0.0.0.0代表监听本机所有网卡的请求 server_socket.bind(('0.0.0.0', 7000))第三步:验证端口连通性
可先跳过Python代码,在Windows客户端的PowerShell中执行以下命令,直接验证7000端口的连通性:# 将<CentOS实际IP>替换为你的服务端虚拟机IP Test-NetConnection <CentOS实际IP> -Port 7000若返回结果中
TcpTestSucceeded值为True,说明网络和端口配置正常,问题出在代码逻辑层面;反之则需要重新检查防火墙、虚拟机网络配置。
内容的提问来源于stack exchange,提问作者Software Fan
相关产品推荐
相关产品推荐

