如何创建可跨不同网络访问的Socket服务 绑定公网IP报错如何处理
解决方法
错误原因
你遇到的OSError: [WinError 10049]报错,是因为家用宽带场景下公网IP实际配置在运营商侧的光猫/路由器设备上,你的本机网卡只有内网IP地址,无法直接绑定不属于本机网卡的公网IP。
操作步骤
- 第一步:修改
server.py绑定地址
将SERVER变量修改为0.0.0.0,表示监听本机所有网卡的连接请求,无需绑定公网IP:
SERVER = '0.0.0.0'
修改后重新启动服务端即可正常运行。
第二步:确认宽带具备公网IPv4
拨打运营商客服电话,申请开通公网IPv4,告知需求为家用远程监控即可,普通家庭宽带都可以免费开通。第三步:配置路由器端口映射
登录路由器管理后台,找到「虚拟服务器」/「端口映射」功能,新增一条规则:- 外部端口:5050
- 内部端口:5050
- 协议类型:TCP
- 内部IP地址:填写运行
server.py设备的内网IP(即你原配置的192.168.0.30)
保存规则后生效。
第四步:放开系统防火墙限制
在运行server.py的Windows设备上,新增防火墙入站规则,放开5050端口的TCP入站请求,也可以临时关闭防火墙测试连通性。第五步:修改客户端配置
将client.py中的SERVER变量修改为你的公网IP,在外网环境下运行客户端即可正常连接。
补充说明
如果运营商分配的是动态公网IP,每次重启光猫后公网IP会变更,可以搭配DDNS服务实现固定域名访问,无需每次手动修改客户端IP配置。
内容的提问来源于stack exchange,提问作者Gabe Morris
相关产品推荐
相关产品推荐

