socket访问公网服务器失败
Posted 图南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket访问公网服务器失败相关的知识,希望对你有一定的参考价值。
1.socket访问公网服务器失败
1.1问题描述:
在局域网内部进行socket编程时可以成功的相互通信,倒是一旦放到公网上则无法连接上。
1.2解决方案:
这是由于云服务提供商防火墙的缘故,登录云服务控制台设置相应socket端口开放即可。若还未能解决问题查看以下。
1.2.1查看服务器相应的端口是否开放有关命令:
1、开放端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent //开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent //关闭5672端口
firewall-cmd --reload //配置立即生效
2、查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
3、关闭防火墙
systemctl stop firewalld.service
4、查看防火墙状态
firewall-cmd --state
5、查看监听的端口
netstat -lnpt
6、检查端口被哪个进程占用
netstat -lnpt |grep 5672
2.2.1查看服务器,客户端IP是否写正确。
服务器socket绑定的IP应为本机的IP填写时可以用0.0.0.0代替或者将sin_addr设置为INADDR_ANY
客户端socket绑定的IP应为目标网络的ip
websocket 能不能穿透
参考技术A 你好关于websocket 能不能穿透
1,你电脑开了服务端,别人要连你的话 你这个 http 服务端端口保证在公网能访问就行。
2,局域网访问同理。
其他:如果是穿透的话,应该是你电脑作为客户端去主动去连接公网的服务端,公网上其他机器通过先连接这个服务端然后实现与局域网内机器的通信。因为此时情景是处于内网的机器是能直接访问外网,而外网不能直接访问内网机器,否则也不用穿透了。
希望对你有帮助
以上是关于socket访问公网服务器失败的主要内容,如果未能解决你的问题,请参考以下文章
c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)