学网络编程的时候,想尝试一下本地虚拟机向云服务器进行通信。修改客户端绑定了服务器的公网ip。此时分别运行,发现两边没反应,客户端报错connection refused。排查代码,无误。排查网络问题,虚拟机ping服务器的公网IP,成功ping通。
此时根据网上的资料,发现服务器终端使用ifconfig查到的是一个内网IP,结合IP出错的思路和网上的资料,成功解决问题。
解决方法:
1、服务器绑定的IP为内网IP
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
int dst;
inet_pton(AF_INET,"x.x.x.x",(void*)&dst); //x.x.x.x为内网IP
servaddr.sin_addr.s_addr = dst;
2、客户端绑定公网IP
此时我重新编译运行,仍然不通,最后发现是云服务器并没有开放我测试时使用的端口。解决方法:打开腾讯云服务器->防火墙->添加规则->开放对应端口。
此时再次运行,成功进行通信